在 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 | 自动化强 | 设置成本高 |