sql-server - Netezza 使用 SSIS 从 Sql 服务器增量加载

标签 sql-server ssis netezza

我正在尝试使用 SSIS 从 Sql server 2008 到 Netezza (Nps6) 进行增量加载。 使用 Netezza 5.x 版本 OLEDB 驱动程序。我正在使用表或 View - 快速加载选项以及最大插入提交大小 = 0

在这里,我尝试将数千条记录插入到 Netezza 表中。该目标表包含数百万条记录。此数据流任务需要一个小时才能完成。当我查看 Netezza 管理员事件查询时,我发现问题是像下面这样的查询,

SELECT * FROM Destination_Table;

下一步是外部表加载,如下所示,

insert into "destination_table"(col1, col2, col3)
select c0, c1, c2 from external '/dev/null' (c0, c1, c2) using ( 
    remotesource odbc' delimiter ' ' escapechar '\' ctrlchars 'yes' crinstring 'yes' timeroundnanos 'yes' encoding 'internal' maxerrors 1
) ;

任何人都可以帮助我理解为什么加载时需要 SELECT * FROM 目标表。或者 Netezza OLEDB 驱动程序如何与 SSIS 配合使用。

感谢您的帮助。

最佳答案

在不查看包中的详细信息的情况下,如果您未在 OLE DB 目标组件中为数据访问模式选择表或 View - 快速加载 选项,则会出现您所解释的行为。快速加载选项将在内部使用 BULK INSERT 将数据上传到目标表。

Fast Load Option

使用表或 View 的行为类似于SELECT *并提取所有列。仅当您需要从源到目标的表或 View 的所有列时,才应使用此访问模式。

您面临的问题是,由于您使用的是 Netezza,因此默认情况下可能不会显示此选项。

请参阅此处讨论的问题以及可能的解决方法:

http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/965b6d83-cf5e-405b-8784-7981e4386adc

此处提出的官方错误报告:

https://connect.microsoft.com/SQLServer/feedback/details/569087

关于sql-server - Netezza 使用 SSIS 从 Sql 服务器增量加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705449/

相关文章:

sql server用null替换特殊字符

sql-server - 前 7 天的 MSSQL 订单

sql-server - 查询中包含函数吗?

azure - 为什么 SSIS on Prem 需要自己的 Azure SSIS IR(代理)?

sql - 如何删除符合 SQL 中某些条件的一条记录? (内特扎)

SQL为多行中的字段填充空值作为先前的非空值

sql - Xpath SQL Server 查询

c# - 尝试向表中添加行时无法将 Int32 转换为 null

SSIS 暂存表 - 每次都可以重建吗?

sql - 如何在我的 SQL Server 代理作业中创建一个步骤来运行我的 SSIS 包?