【问题标题】:Prioritize Bulk Insert in a table using Union all in ssis在 ssis 中使用 Union all 在表中优先批量插入
【发布时间】:2017-08-18 13:18:21
【问题描述】:

我有多个存档表,在这些表中存储类似类型的数据,但以月份格式存档。现在,要求是将所有归档数据放入一个表而不是多个表。

我在 SSIS 中的 Union all 的帮助下进行这项活动,但它似乎在目标表中随机插入。

Attach 是转换的路径。

我想优先插入,请建议!

【问题讨论】:

  • 不清楚。您所说的“随机插入”是什么意思?您希望如何确定它的优先级?
  • 除非您必须失败并在部分失败时回滚整个过程,否则我建议使用单独的数据流任务而不是使用 union all。然后,您可以确定任务之间的优先级/流程,并选择它们完成的顺序。如果您可以创建文件名的记录集,那么您可以设置一个循环并使用相同的数据流,这会带来额外的好处......最终插入发生的顺序在 sql 中并不重要,因为数据库引擎将根据索引和表定义优化存储不是插入的行序号位置

标签: ssis bulkinsert sql-server-2016 union-all


【解决方案1】:

您可以为每个 OLE DB 源添加一个额外的列“优先级”,每个源具有相应的优先级,然后在合并后您可以添加按优先级对数据进行排序的排序组件。但是如果你有很多数据 - 那将是非常低效的,因为排序组件会等到所有源数据都被读取。

我建议编写一个适当的源 SQL 语句,为您执行联合/优先级/排序,然后插入目标。

此外,如果源位于不同的服务器上,您可以创建 Foreach 循环容器,该容器将遍历源表并将它们全部插入到目标表中。您可以使用this article 作为参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多