🧾【教學】如何安全又穩定地使用 BULK INSERT 匯入大型 CSV / TSV 到 SQL Server?常見錯誤與解法全解析!
📌 前言:為什麼我們選擇 BULK INSERT? 在企業中常見的情境是,某些部門會匯出成千上萬筆資料的 CSV 或 TSV 檔案,而我們需要快速地匯入到 SQL Server 中進行分析或報表製作。這時候, BULK INSERT 是一個快速又有效率的選項。 🧱 Step 1:先建立「中繼表」接收原始資料 為了避免型別錯誤,我們建立一個 staging table,所有欄位都先用 nvarchar(4000) : CREATE TABLE dbo.MyData_stg ( ID nvarchar( 4000 ), Name nvarchar( 4000 ), Score nvarchar( 4000 ), CreateDate nvarchar( 4000 ) ); 這樣就不會因為欄位格式不合而導致匯入失敗。 🧾 Step 2:CSV ➜ TSV,避免欄位中有逗號破壞欄位格式 很多 CSV 欄位中含有逗號,會導致欄位錯位。可使用 PowerShell 轉成 Tab 分隔檔(TSV): $src = "D:\Data\source.csv" $dst = "D:\Data\converted.tsv" # 若資料夾不存在,先建立 New-Item -Path "D:\Data" -ItemType Directory -Force Import-Csv $src | Export-Csv $dst -Delimiter "`t" -NoTypeInformation -Encoding UTF8 🧮 Step 3:使用 BULK INSERT 匯入 TSV BULK INSERT dbo.MyData_stg FROM 'D:\Data\converted.tsv' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = '\t' , ROWTERMINATOR = '\...