-- 1. 建表 + 導數據(不複製索引/約束)
SELECT * INTO TargetDB.dbo.Product FROM SourceDB.dbo.Product;
-- 2. 僅導數據(目標表已存在)
INSERT INTO TargetDB.dbo.Product (Col1,Col2...)
SELECT Col1,Col2... FROM SourceDB.dbo.Product;
優點:T-SQL 原生、極快、無外部依賴。
缺點:僅限 SQL Server 同質;不複製索引/觸發器/權限;SELECT INTO 要求目標表不存在。
優點:可視化、人工干預靈活、跨平台。
缺點:Excel 104 萬行限制、大數據極慢、人工介入不可自動化。
Microsoft.SqlServer.Dts.Runtime 動態執行包,實現前台觸發後台 ETL。優點:高性能、可視化、可擴展、支援複雜清洗邏輯、生產級調度監控。
缺點:學習曲線陡、包開發調試耗時、小項目過重。
-- 一次性查詢 Oracle 並導入
INSERT INTO SQLTarget.dbo.Table
SELECT * FROM OPENROWSET('MSDAORA', 'Server=ORA;User=u;Pwd=p;', 'SELECT * FROM SourceTable');
-- 或建立連接服務器後用四部名
INSERT INTO SQLTarget.dbo.Table SELECT * FROM LinkedSvr..Schema.SourceTable;
優點:無需中間文件、T-SQL 直連異構源。
缺點:需配置 OLE DB Provider、權限繁瑣、Ad-hoc 分布式查詢預設關閉、錯誤排查難、無內建清洗/錯誤重導流程。
| 場景 | 首選方案 | 備選 |
|---|---|---|
| SQL Server → SQL Server,結構固定、無清洗 | SELECT INTO / INSERT INTO | SSIS |
| 異構源、需人工清洗、<100 萬行 | Excel/CSV 中轉 | SSIS |
| 定期自動化 ETL、複雜轉換、企業級監控 | SSIS | Azure Data Factory / ADF |
| 一次性 Ad-hoc 跨庫查詢、DBA 手工執行 | OPENROWSET / Linked Server | 導出文件再導入 |
「日常 80% 場景用 **Excel 中轉**(直觀、可控);大批次自動化上 **SSIS**;臨時跨庫查詢用 **OPENROWSET**。工具箱裡全備著,場景決定選擇。」
數據導入沒有銀彈,只有「合適的工具給合適的場景」。建立從輕量到重型的方案梯隊,才能在項目實施中游刃有餘。