如何通过单条INSERT语句批量将Excel家长数据导入SQL数据库?
批量导入Excel数据到SQL Server的实用方案(无需手动编写2643条INSERT)
方法1:单条INSERT语句批量插入
SQL Server支持在单条INSERT中传入多组VALUES,只需生成一个包含所有数据的语句即可,不用逐条编写。
语法示例:
USE [XSchoolContactInfoDB] GO INSERT INTO [dbo].[Parents] ([ParentId], [ParentTitle], [ParentName], [ParentSurname], [CellPhone], [LearnerID]) VALUES (1, 'Mr', 'John', 'Doe', '0123456789', 1001), (2, 'Mrs', 'Jane', 'Smith', '0987654321', 1002), -- 继续添加剩余2641组数据 GO
快速生成多组VALUES的技巧:
- 打开Excel数据文件,确保列顺序和SQL表字段对应(ParentId、ParentTitle等)
- 新增辅助列,用公式拼接每组数据的格式:
示例公式(根据你的Excel列位置调整A2-F2):
(字符串类型需加单引号,数字类型直接保留)= "(" & A2 & ", '" & B2 & "', '" & C2 & "', '" & D2 & "', '" & E2 & "', " & F2 & ")," - 下拉公式覆盖所有数据行,复制辅助列内容粘贴到SQL的VALUES后,最后删除最后一组末尾的逗号即可。
方法2:用OPENROWSET直接读取Excel(高效省时间)
如果SQL Server能访问Excel文件路径,可直接通过查询导入,无需手动拼接数据:
USE [XSchoolContactInfoDB] GO INSERT INTO [dbo].[Parents] ([ParentId], [ParentTitle], [ParentName], [ParentSurname], [CellPhone], [LearnerID]) SELECT ParentId, ParentTitle, ParentName, ParentSurname, CellPhone, LearnerID FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=C:\你的文件路径\ParentContacts.xlsx', 'SELECT * FROM [Sheet1$]' ); GO
- 注意:需确保SQL Server服务有权限访问文件路径,且安装了Microsoft Access Database Engine驱动。
方法3:SQL Server导入导出向导(适合培训演示)
- 打开SQL Server Management Studio(SSMS),连接到目标数据库
- 右键点击
XSchoolContactInfoDB→ 任务 → 导入数据 - 数据源选择「Microsoft Excel」,选中你的Excel文件,勾选「第一行包含列名称」
- 目标选择你的SQL Server数据库,匹配Excel列与SQL表字段
- 按向导完成导入,全程可视化操作,适合培训场景展示
内容的提问来源于stack exchange,提问作者Andries Gous
相关产品推荐
相关产品推荐

