2017-02-22 34 views
0

問題:我試圖用bulk insert查詢將具有成千上萬行的.csv文件插入到SQL Server表中。現在我想要更新特定列更改的批量更新表,例如價格更改。我怎樣才能做到這一點?也:我想忽略約束插入到表時批量更改SQL Server數據庫中特定列的所有條目

BULK INSERT Table 
FROM 'D:\test.csv' 
WITH 
    (FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n') 
GO 

現在如表包含價格列時我第二次更新文件只有它有不同的價格該行更新之前

回答

3

就做兩(或更多)步驟。

插入原始數據(缺陷和全部),然後運行單獨的更新語句以使其看起來如何。

對於大型或繁忙的表格,或者爲了保持新數據的分離直到準備就緒,您可能還需要先將大量插入到單獨的保存表中,按摩並清理那裏的數據,然後從把桌子拿到決賽桌上。

或者,您可以編寫客戶端程序在批量插入前預先清理數據,也可以使用Sql Server Integration Services(SSIS)等工具來處理導入。 SSIS有很多很好的功能來處理這種事情。

你無法做的是對批量插入代碼進行簡單或快速的調整。它做它所做的事情,僅此而已。

1

您不能只在上一次上傳時批量上傳一個文件,而只能記錄差異。您可以完全刷新數據(即:覆蓋的全部負載),將完整的CSV上傳到暫存表並使用SQL代碼比較兩個表,或者可以使用SSIS等工具連接到CSV文件,然後檢查它針對表格中的值並從那裏觸發更新。

相關問題