日常運維中,資料遷移與匯入匯出是高頻剛需。SQL Server 提供了多樣化的工具鏈,各有優勢適用場景不同。本文系統梳理五大主流方式,助你按需選型。
圖形化、所見即所得、支援異構資料源(Excel、Access、Oracle、平面檔案等)。啟動方式:執行 dtswizard 或在 SSMS 中右鍵資料庫 → 任務。亮點在於可將操作另存為 SSIS 套件(.dtsx),後續可用 BI Studio (BIDS) 進一步編輯、排程、部署,實現自動化 ETL。


注意: 64 位環境下直接啟動精靈可能缺少 Excel/Access 提供者;透過 SSMS 啟動則可見。
適合腳本化、批次化大量資料搬運。基於 DB-Library,效能極高,支援平行匯入。缺點:匯出無標題列,格式控制較弱。
-- 匯出表到 Excel
bcp pubs.dbo.authors out c:\temp\authors.xls -c -q -S"Server" -U"sa" -P"pwd"
-- 依查詢匯出
bcp "SELECT * FROM pubs.dbo.authors WHERE state='CA'" queryout c:\temp\ca_authors.txt -c -t, -S"Server" -U"sa" -P"pwd"
-- 匯入資料
bcp pubs.dbo.authors in c:\temp\authors.txt -c -q -S"Server" -U"sa" -P"pwd"
在 T-SQL 中直接讀取文字檔、Excel 檔,無需外部程式。適合存儲過程內嵌入。
BULK INSERT dbo.StagingTable FROM 'C:\data\import.txt' WITH (FIELDTERMINATOR=',', ROWTERMINATOR='\n');
INSERT INTO dbo.TargetTable
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\data\source.xlsx;HDR=YES', 'SELECT * FROM [Sheet1$]');
XML 格式交換資料的標準化選擇。FOR XML 將查詢結果序列化為 XML;OPENXML 將 XML 文件解析為資料列集寫入資料表。
-- 匯出 XML
SELECT * FROM Orders FOR XML RAW('OrderItem'), ELEMENTS XSINIL, ROOT('Orders');
-- 匯入 XML
DECLARE @x XML = '...', @hdoc INT;
EXEC sp_xml_preparedocument @hdoc OUTPUT, @x;
INSERT INTO Orders SELECT * FROM OPENXML(@hdoc, '/Orders/OrderItem', 2) WITH Orders;
EXEC sp_xml_removedocument @hdoc;
業務人員最愛:在 Excel 中直接建立資料庫查詢,資料刷新即同步,適合報表分析、臨時查詢。


選型建議: 同質 SQL Server 間簡單遷移用 T-SQL;大量批次、排程自動化首選 SSIS/BCP;異構源、需資料清洗轉換用 SSIS;臨時分析用 Excel 連線;程式碼嵌入用 BULK INSERT/OPENROWSET。