Sql-Server
對沒有主鍵的兩個 csv 文件進行比較
我想知道在 SSIS 中是否有一種方法可以比較兩個沒有引用鍵的 csv 文件(具有相同的結構)以使記錄唯一。
從我的意思給你一個更好的畫面;在初始載入中,我們將 csv 文件中的數據載入到表中,在後續載入中,我們將獲得另一個可以具有不同記錄的 csv 文件(相同格式)。我們應該將表中的內容與新版本的 csv 文件中的內容進行比較,並且只載入更改的子集。如果有新記錄,則應插入,如果更新,則應更新,如果記錄在源中刪除,則應在表中將其標記為不活動。
現在我的問題是:
- 有沒有辦法比較 SSIS 中的兩個 csv 文件,而沒有使記錄唯一的密鑰?
- 我們如何在 SQL Server 中比較兩個表,而沒有使記錄唯一的鍵?
csv文件的數據量相當大,超過2000萬條記錄!
任何想法都值得讚賞。
謝謝,
納齊拉
如果您將第一個 CSV 載入到表中,則可以輕鬆地將另一個 CSV 載入到臨時表中(可能與“真實”表具有相同的結構)。然後你可以通過
SELECT * FROM staging_table EXCEPT SELECT * FROM real_table ;
新 CSV 中缺少的行可以反轉兩側
EXCEPT
。但是,鑑於暫存表上缺少鍵(希望不是真正的鍵-從您的問題中不清楚),基於此比較刪除行可能會很痛苦,尤其是在有這麼多行的情況下。完成後,您可以刪除臨時表。
(據我所知,這種方法適用於任何 RDBMS。)