Sql-Server-2012
在 SQL Server Management Studio 中讀取 CSV 並執行 SQL
是否可以在 SQL Server Management Studio 中讀取 CSV 並每行執行 SQL 更新?
例子
數據.csv
"column1","column2,"column3" "column1","column2,"column3" "column1","column2,"column3" "column1","column2,"column3" "column1","column2,"column3"
我想根據每一行中的數據執行 SQL 更新,例如
UPDATE [data].[orders] set order_number = $column1, something_else = $column2 where order = $column3
這可以在 SQL Server Management Studio 中執行嗎?
您可以為此使用BULK INSERT:
CREATE TABLE #orders ( Column1 int, Column2 nvarchar(max), Column3 datetimeoffset ) BULK INSERT #orders FROM 'X:\orders.csv' WITH ( FIRSTROW = 1, DATAFILETYPE='widechar', -- UTF-16 FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', TABLOCK, KEEPNULLS -- Treat empty fields as NULLs. )
如果您從 SQL Management Studio 導出 CSV,則需要做一些準備工作:
- 該文件應轉換為 UTF-16。
- 所有
NULL
s 都應替換為空字元串。這是一個 Powershell 腳本:
Get-Content .\orders_raw.csv -Encoding UTF8 | % { $_ -replace "NULL","" } | Out-File ".\orders.csv"
一種簡單易行的方法是將 csv 導入表中,然後進行操作/查看。如果您更喜歡圖形方法而不是使用 tsql;右鍵點擊您的數據庫並選擇任務,然後選擇導入數據。