首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 海量資料導入最快方案:BULK INSERT 實戰詳解

     編輯:關於SqlServer

為什麼選 BULK INSERT?

  • 速度極快:100 萬筆資料約 20 秒內完成。
  • 可程式化控制,介面友善,易整合應用系統。
  • 支援格式化檔案(CSV、固定寬度等)。

三大缺點與對策

缺點對策
需獨佔目標表離峰時段執行,或使用分區表切換
產生大量交易記錄導入前切換至 BULK_LOGGED 復原模式,導入後改回 FULL
來源檔案格式受限預處理資料檔,或使用格式化檔 (.fmt)

完整 T-SQL 腳本範例

-- 1. 切換至大量記錄復原模式(最小化記錄)
ALTER DATABASE Taxi SET RECOVERY BULK_LOGGED;
GO

-- 2. 執行大量導入
BULK INSERT Taxi..Detail
FROM 'E:\out.txt'
WITH (
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n',
    TABLOCK
);
GO

-- 3. 恢復完整復原模式
ALTER DATABASE Taxi SET RECOVERY FULL;
GO

關鍵參數說明

  • DATAFILETYPE:char(文字)、native(二進位)、widechar(Unicode)。
  • FIELDTERMINATOR / ROWTERMINATOR:欄位與列分隔符,支援多字元。
  • TABLOCK:導入期間取得表級鎖,大幅提升速度並減少記錄。
  • FORMATFILE:指定 .fmt 檔可處理複雜格式(欄位順序不同、跳過欄位等)。

進階控制

若需逐列驗證或轉換,可先 BULK INSERT 至暫存表,再用 T-SQL 清洗後 INSERT SELECT 進正式表,犧牲少許速度換取資料品質。

適用場景

  • 夜間批次匯入(ETL)。
  • 異構系統資料遷移。
  • 大量歷史資料初始化載入。

掌握 BULK INSERT 與復原模式切換,是 SQL Server 高效能資料載入的核心技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved