SQL Server Management StudioでCSVを読み取り、1行ごとにSQL更新を実行することは可能ですか?
例
data.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をエクスポートした場合、いくつかの準備が必要です。
NULL
sは空の文字列に置き換える必要があります。そのためのPowerShellスクリプトを次に示します。
Get-Content .\orders_raw.csv -Encoding UTF8 | % { $_ -replace "NULL","" } | Out-File ".\orders.csv"
これを行う簡単で簡単な方法は、csvをテーブルにインポートしてから、操作/表示することです。 tsqlを使用する代わりにグラフィカルな方法を使用したい場合。データベースを右クリックして[タスク]を選択し、[データのインポート]を選択します。
可能性があります SSMS:Excelからデータをインポート(コピー/貼り付け)する方法 が役立ちます(BULK INSERT
を使用したくない場合、またはその権限がない場合)。