通过 SSIS 将数据插入带有序列列的 Oracle table 时出现问题

Problems inserting data into Oracle table with sequence column via SSIS

我正在将数据插入到 Oracle 中的 table 中,它在其中一列(如 Id 列)中设置了一个序列。我想知道如何将数据加载到这样的 table 中。

我按照下面的link-

It's possible to use OleDbConnections with the Script Component?

并尝试创建一个函数以从 Oracle table 获取 .nextval,但我收到以下错误 -

尝试检索错误 ORA-01019 的文本时出错

我意识到通过包手动设置值,即通过使用脚本任务来枚举值,但没有增加序列,这是导致问题的原因。我们如何处理它?有没有link可以帮我解决的?

我正在使用 SSIS-2014,但由于信誉点数不足,我无法标记它。

ORA-01019 可能与您安装了多个 Oracle 客户端有关。如果它只包含一个客户端,请检查 ORACLE_HOME 变量。

我正在考虑的一种解决方法是创建两个处理序列的过程。获得价值的起点:

create or replace function get_first from seq as return number
seqid number;
begin
select seq_name.nexval into seqid from dual;
return seqid;
end;
/

然后在脚本中进行递增。然后调用第二个过程来增加序列:

create or replace procedure setseq(val number) as
begin 
execute immediate 'ALTER SEQUENCE seq_name INCREMENT BY ' || val;
end;
/

这不是一个好方法,但也许可以解决您的问题

我创建了一个解决方法来解决这个问题。我已经创建了目标的暂存 tables,但没有采用序列 ID 的列。插入数据后,我将调用 SQL 语句将数据从暂存 table 中获取到主 table 中并使用 .nextval 函数。最后truncating/dropping table 视需要而定。知道如何通过脚本处理同样的事情而不是使用这种解决方法仍然很有趣。

例如下面的内容 -

insert into table_main
select table_main_sequence_name.nextval
,*
from (
select *
from table_stg
)