Netezza 中的代理键 - SSIS 和 Netezza 序列
Posted
技术标签:
【中文标题】Netezza 中的代理键 - SSIS 和 Netezza 序列【英文标题】:Surrogate Key in Netezza - SSIS and Netezza sequence 【发布时间】:2016-05-09 19:17:19 【问题描述】:我正在使用控制流中的 SSIS 脚本任务从 Oracle 表中获取一些数据并插入到 Netezza 表中。
目标:填充目标表中的代理键(如着陆 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
...
等等。
有没有办法在不使用序列的情况下实现这一点?
非常感谢您的阅读以及您可能提供的任何想法/提示/建议。
【问题讨论】:
【参考方案1】:我从这里看到了分辨率...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
【讨论】:
【参考方案2】:删除括号和多余的选择,它将为每一行生成一个新值。
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)
【讨论】:
以上是关于Netezza 中的代理键 - SSIS 和 Netezza 序列的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 SSIS 快速加载选项从 Excel 源加载 Netezza 中的数据
从 SSIS 包访问 netezza 的系统目录视图不起作用