2010-11-23 40 views
0

我有一個.csv文件,在SSIS包期間被轉換爲600萬行。我有一個SQLServer 2005中有2500萬行的表。 .csv文件具有複製表中數據的數據,如果行已經存在,是否可以更新行,或者有效實現此目的的最佳方法是什麼?是否可以用SSIS插入或類似的東西來覆蓋?

回答

5

比較6m行與25m行對於每行調用lookup或SQL命令數據流組件來執行upsert不會太高效。在這些情況下,有時將它們快速加載到臨時表中並使用單個基於集合的SQL命令來執行upsert是最有效的。

即使您決定執行查找 - 將流分成兩個流,一個插入,另一個插入臨時表中進行更新操作。

+0

非常好的一點,查找任務可能會慢這個行數。分段和SQL是一個不錯的選擇。 – grapefruitmoon 2010-11-23 16:46:42

2

如果您不介意丟失舊數據(即最新的文件是重要的,而不是表中的內容),您可以擦除表中的所有記錄並再次插入它們。

您也可以加載到臨時表中,並確定需要更新哪些內容以及需要從中插入哪些內容。

1

您可以使用查找任務來識別CSV和表中的任何匹配行,然後將其輸出傳遞給另一個表或數據流,並使用SQL任務執行所需的更新。

相關問題