use*_*200 5 sql-server-2012 csv
是否可以在 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.
)
Run Code Online (Sandbox Code Playgroud)
如果您从 SQL Management Studio 导出 CSV,则需要做一些准备工作:
NULLs 都应替换为空字符串。这是一个Powershell脚本:
Get-Content .\orders_raw.csv -Encoding UTF8 | % { $_ -replace "NULL","" } | Out-File ".\orders.csv"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43074 次 |
| 最近记录: |