Sql-Server-2012

在 SQL Server Management Studio 中讀取 CSV 並執行 SQL

  • April 9, 2020

是否可以在 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,則需要做一些準備工作:

  1. 該文件應轉換為 UTF-16。
  2. 所有NULLs 都應替換為空字元串。

這是一個 Powershell 腳本:

Get-Content .\orders_raw.csv -Encoding UTF8 | % { $_ -replace "NULL","" } | Out-File ".\orders.csv" 

一種簡單易行的方法是將 csv 導入表中,然後進行操作/查看。如果您更喜歡圖形方法而不是使用 tsql;右鍵點擊您的數據庫並選擇任務,然後選擇導入數據。

引用自:https://dba.stackexchange.com/questions/143215