2

我正在将数据插入到 Oracle 中的一个表中,该表在其中一个列中设置了一个序列,比如 Id 列。我想知道如何将数据加载到此类表中。

我按照下面的链接 -

可以将 OleDbConnections 与脚本组件一起使用吗?

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

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

我意识到通过包手动设置值,即使用脚本任务枚举值,但不会增加序列,这会导致问题。我们如何处理它?任何可以帮助我解决它的链接?

我正在使用 SSIS-2014,但由于缺乏声誉点,我无法标记它。

4

2 回答 2

1

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

例如下面的东西 -

insert into table_main
select table_main_sequence_name.nextval
,*
from (
select *
from table_stg
)
于 2016-11-06T22:29:56.570 回答
0

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;
/

这不是一个好方法,但也许它会解决你的问题

于 2016-11-06T16:57:59.567 回答