專案需一次性匯入 200 萬筆資料,普通 INSERT 需數小時。評估 BCP(命令列、使用者體驗差)後,選擇 BULK INSERT:可程式化、介面友善、速度極快(100 萬筆 < 20 秒)。
| 缺點 | 對策 |
|---|---|
| 需獨佔目標表 | 維護窗口執行或鎖定控制 |
| 產生大量交易記錄 | 匯入前動態切換復原模式為 BULK_LOGGED,結束後改回 FULL |
| 來源檔案格式限制 | 犧牲少許速度可逐列精確控制 |
ALTER DATABASE taxi SET RECOVERY BULK_LOGGED
GO
BULK INSERT taxi..detail FROM 'e:\out.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
TABLOCK
)
GO
ALTER DATABASE taxi SET RECOVERY FULL
GO
TABLOCK:取得表級鎖定,提升大量載入效能。BULK_LOGGED:最小化記錄量,避免記錄檔暴漲與 I/O 爭用。',' + '\n')。此方案在速度與可控性間取得最佳平衡,是百萬級以上資料初始化/遷移/同步的首選武器。