我在C#中使用SqlBulkCopy
類將數據從一個SQL Server數據庫快速複製到另一個數據庫。這些數據庫位於不同的服務器中,它們的數據表沒有任何PK,所以過程變得更加複雜。如何正確避免在沒有任何PK的SQL Server數據表中插入重複行?
的問題是,我使用的是從原始數據庫中選擇數據的查詢得到重複的行和SqlBulkCopy
無法避免在目標數據庫中插入重複記錄。
我不能使用SELECT *
,因爲它會拋出OutOfMemoryException
,所以我做了SELECT TOP X *
並將該數據加載到DataTable
中。在每個Datatable
中,我可以使用C#刪除重複的記錄,但是當我選擇下一個TOP X時,所選的第一行可能等於之前DataTable
中已經插入目標數據庫的最後一行。 DataTable
變量總是相同的,它被重新加載!
我想避免重複記錄被未插入創建PK,因爲它並不適用於我的情況。我真的需要使用SqlBulkCopy
,因爲快速複製是系統要求。任何建議?先謝謝你!
將數據加載到臨時表中,然後將數據從臨時表移動到最終表,刪除數據庫中的重複項。 –
我在想這件事,也許這真的是這種情況的唯一選擇。我需要更多地研究這個問題。說明表與臨時表相同嗎?它們是否應該與最終表格在同一個數據庫中創建? – AnnaB
可以;你只是做SELECT DISTINCT? – SomeStudent