【问题标题】:Netezza Incremental load from Sql server using SSIS使用 SSIS 从 Sql 服务器进行 Netezza 增量加载
【发布时间】:2013-05-18 07:29:58
【问题描述】:

我正在尝试使用 SSIS 从 Sql server 2008 到 Netezza (Nps6) 进行增量加载。 使用 Netezza 5.x 版 OLEDB 驱动程序。我正在使用Table or View - Fast Load 选项和Maximum insert commit size = 0

在这里,我尝试将数千条记录插入到 Netezza 表中。此目标表包含数百万条记录。此数据流任务需要几个小时才能完成。当我查看 Netezza Administrator Active Queries 时,我可以看到像下面这样的查询是问题所在,

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 配合使用。

感谢您的帮助。

【问题讨论】:

    标签: sql-server ssis netezza


    【解决方案1】:

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

    使用Table or view 的行为类似于SELECT * 并拉出所有列。仅当您需要从源到目标的表或视图的所有列时,才应使用此访问模式。

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

    查看此处讨论的问题以及可能的解决方法:

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

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

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

    【讨论】:

    • 抱歉,我错过了更详细的信息。我正在使用快速加载选项,并且最大插入提交大小设置为零。谢谢米伦。
    • 安装 OLEDB 6.x 版本后,不会出现此“SELECT * FROM DESTINATION TABLE”问题。我可以看到 OLEDB 6 版本的性能得到了很好的改进。但是,如果我们正在开发 OLEDB 5.x 版本,我认为最好先加载到阶段表,然后再加载到目标表。
    • 这是有道理的,您应该将其添加为您的答案并将其标记为已接受。如果其他人遇到类似问题,我会留下我的答案。
    【解决方案2】:

    安装 OLEDB 6.x 版本后,不会出现此“SELECT * FROM DESTINATION TABLE”问题。我可以看到 OLEDB 6 版本的性能得到了很好的改进。但是,如果我们正在开发 OLEDB 5.x 版本,我相信最好先加载到阶段表,然后再加载到目标表

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多