我目前正在使用 SSIS 2012 进行大型数据迁移练习。
我有一项任务要完成,但不确定最佳方法。
表 A 有 210 万条记录。
我需要迭代每一行并且:
步骤 1. 使用复杂子查询的结果更新特定字段,执行一些文本操作
步骤 2. 从 TableA 第2a行的电子邮件字段中获取电子邮件地址。查找用户表
2b。如果电子邮件存在,则获取 ID 并更新 TableA 行
2c 中的 UserId。如果电子邮件不存在 - 在 User 表中插入新记录,取回 ID 并更新 TableA 行中的 UserId
第 1 步和第 2 步不必同时完成,这些任务可以拆分为单独的数据流,因为它们不相关。
我可以用游标来写这一切——非常简单,但我知道作为一般规则使用游标是不被接受的。
我使用新的 MERGE 函数为上面的第 1 步编写了一个纯 sql 脚本。它使用的子查询调用视图,而视图又使用缩放函数来执行一些复杂的文本操作。在此通过 SSIS 运行 1h 12m 之后,由于 tembDB.log 磁盘空间不足,SSIS 被炸毁。
不确定我的查询是导致 tembDB 失控还是之前运行的 SSIS 包中的其他原因?我怎么知道?
那么,有没有人对 SSIS 中实现上述第 1 步和第 2 步的最佳工具有任何提示?