Netezza 中的代理键 - SSIS 和 Netezza 序列

Surrogate Key in Netezza - SSIS and Netezza sequence

我正在使用控制流中的 SSIS 脚本任务 从 Oracle table 获取一些数据并插入到 Netezza table 中。

Objective: 以填充目标 table 中的代理键(如登陆 ID)字段。

现在查询如下:

insert into destination_table
(
id, col1, col2, col3
)
select (SELECT NEXT VALUE FOR MY_SEQUENCER), field1, field2, field3
from source_table

我正在使用 Netezza 序列 (MY_SEQUENCER) 生成唯一编号,但序列值在查询提交之前不会递增。结果,插入数据后,我得到:

1, val1, val2, val3
1, val4, val5, val6
...

后续 运行:

2, val1, val2, val3
2, val4, val5, val6
...

等等。

有没有不使用序列就能实现的方法?

非常感谢您的阅读以及您可能提供的任何 ideas/tips/suggestions。

我从这里看到了决议... In Netezza I'm trying to use a sequence in a case statement but the sequence value doesn't increment

insert into destination_table
(
id, col1, col2, col3
)
select (NEXT VALUE FOR MY_SEQUENCER), field1, field2, field3
from source_table

删除括号和多余的select,它将为每一行生成一个新值。

TESTDB.ADMIN(ADMIN)=> select (select next value for mysequence), col1, col2 from test2 limit 5;
 ?COLUMN? | COL1 | COL2 
----------+------+------
        2 |    0 | 0
        2 |    2 | 2
        2 |    4 | 4
        2 |    6 | 6
        2 |    8 | 8
(5 rows)

TESTDB.ADMIN(ADMIN)=> select next value for mysequence, col1, col2 from test2 limit 5;
 NEXTVAL | COL1 | COL2 
---------+------+------
  200001 |    1 | 1
  200002 |    3 | 3
  200003 |    5 | 5
  200004 |    7 | 7
  200005 |    9 | 9
(5 rows)