我有一个.csv文件,在SSIS包期间可以转换为600万行。我在SQLServer 2005中有一个2500万行的表。 .csv文件具有复制表中数据的数据,如果行已经存在,行是否可以更新?或者哪种方法可以有效地实现此目的?
答案 0 :(得分:5)
将6m行与25m行进行比较对于每行调用查找或SQL命令数据流组件进行upsert来说效率不会太高。在这些情况下,有时将它们快速加载到临时表并使用单个基于集的SQL命令来执行upsert是最有效的。
即使你决定进行查找 - 将流分成两个流,一个插入,另一个插入登台表以进行更新操作。
答案 1 :(得分:2)
如果您不介意丢失旧数据(即最新文件非常重要,而不是表格中的内容),您可以删除表格中的所有记录并重新插入。
您还可以加载到临时表中,并确定需要更新的内容以及需要从中插入的内容。
答案 2 :(得分:1)
您可以使用Lookup任务识别CSV和表中的任何匹配行,然后将其输出传递给另一个表或数据流,并使用SQL任务执行所需的更新。