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)
我正在使用控制流中的 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)