在 SQL Server 中,可以通過幾種方式將 Excel 數據導入到數據庫表中。下面是一個完整的流程,包括如何創建表,以及將 Excel 數據導入該表的方法:
? 方法一:使用 SQL Server Management Studio (SSMS) 的導入向導(推薦方式)
-
打開 SSMS 并連接到目標數據庫。
-
右鍵點擊數據庫名 → Tasks(任務) → Import Data(導入數據)。
-
在導入向導中:
- 數據源選擇:
Microsoft Excel
。 - 文件名:選擇你的 Excel 文件(后綴為
.xlsx
或.xls
)。 - Excel 版本:根據實際選擇。
- 是否首行為列名:勾選 “First row has column names”。
- 數據源選擇:
-
目標選擇:SQL Server Native Client。
-
選擇目標表(可以自動創建新表或映射已有表)。
-
點擊 “Edit Mappings”(編輯映射),確認數據類型是否正確。
-
執行導入。
?? SSMS 會自動生成表結構,也可以在導入前手動建表再映射。
? 方法二:T-SQL + OPENROWSET(需配置)
步驟 1:開啟 Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
步驟 2:使用 OPENROWSET
導入(假設你的 Excel 在 C:\data.xlsx
,Sheet 名為 Sheet1$
):
SELECT *
INTO NewTable
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\data.xlsx;HDR=YES;IMEX=1','SELECT * FROM [Sheet1$]'
);
?? 注意事項:
- 要安裝
Microsoft Access Database Engine
才能支持 ACE.OLEDB.12.0。 - SQL Server 必須和 Excel 文件在同一臺機器或共享路徑可訪問。
? 方法三:先創建表,再使用 SSIS 或 BULK INSERT
如果你已經知道表結構,可以手動創建表:
創建表:
CREATE TABLE ExcelData (ID INT,Name NVARCHAR(100),Age INT
);
然后使用導入工具(如導入向導、SSIS)或臨時先導入到 staging 表再處理。
🔁 總結:
方法 | 優點 | 缺點 |
---|---|---|
導入向導 | 簡單圖形界面 | 需手動操作 |
OPENROWSET | 可腳本化 | 配置復雜,需驅動 |
SSIS / BULK INSERT | 自動化強 | 設置成本高 |