Sql-Server
SQL 導入以更新現有記錄?
我在數據庫中有一個表,其中包含每月更新的項目成本。為了更新這些成本,我們有人導出表,在 excel 中做一些魔術,然後將表導入回數據庫。我們正在執行 MSSQL 2005 並使用內置的 SQL Management Studio。問題是當導入回表時,我們必須在導入之前刪除所有記錄,否則會出錯。理想的情況是導入辨識主鍵,然後更新記錄,而不是嘗試使用重複鍵創建第二條記錄——停止導入。可以在http://sqlmanager.net/en/products/mssql/dataimport/documentation/hs2180.html找到我們試圖獲得的行為的最佳說明更新或插入範例。使用內置工具可以實現這樣的事情,還是我們必須讓第三方軟體才能實現?
在 SQL Server 2008 中,您可以將數據放入新表並使用 MERGE 語句,將現有表作為目標,將新表作為源。
相反,您可能更願意將其放入一個新表中,並使用舊方法將其用作您的源(不幸的是使用了兩個步驟):
UPDATE t SET col1 = s.col1, col2 = s.col2 FROM targetTable t JOIN newTable s ON s.id = t.id ; INSERT targetTable (columnlist) SELECT s.col1, s.col2, ... FROM sourceTable s LEFT JOIN targetTable t ON s.id = t.id WHERE t.id IS NULL;
請記住,如果您也嘗試插入標識列,則可能需要在目標表上打開 IDENTITY_INSERT。