Sql-Server
bcp 導入文件如何忽略重複項?
我想使用 bcp 使用如下命令將 csv 文件導入 sql server 2008 R2 數據庫表:
bcp Database..TableName in TableName.csv -n -T -E -S localhost
我的問題:該表包含一行,它也在 csv 文件中(創建數據庫時插入的預設行)。
我可以以某種方式指示 bcp 忽略這一行嗎?我嘗試了 -m 來獲取最大錯誤計數,但是當 bcp 遇到已經存在的記錄(主鍵)時,它仍然會中止。
我不能只刪除這條記錄,因為它包含我稍後需要的安裝相關資訊。
對於這種情況,bcp 沒有很多複雜的錯誤處理。
我認為你的選擇是:
從您的 csv 中刪除一個重複的行。
編寫允許更複雜的錯誤處理的 DTS/SSIS 包。
bcp 進入一個臨時表並使用 t-sql 從臨時表插入到活動表中,使用左連接檢查該行是否存在。就像是:
insert into TableName (column1, column2, ...) select t1.column1, t1.column2, ... from TempTableName t1 left join TableName t2 on t1.primarykey = t2.primarykey where t2.primarykey is null /* row does not already exist */