前言
把 Excel 弄进 SQL Server,很多人第一反应是:
- 开 SSMS →「导入数据」向导
- 或者装一堆驱动、配数据源,搞半小时
实际开发里更常见的是:
- 测试环境造数 :产品给一张表,要进
dbo.Users - 脚本要进 Git:评审、回放,不能只靠向导点一点
- 只有 CSV:编码一乱,中文全变问号
- 机器上没装完整导入组件,或权限不允许随便连外部 Excel
更稳的做法是:先把表格变成 可执行的 .sql,在测试库用 SSMS / Azure Data Studio 跑一遍,再决定是否上生产。
我用的是站内 Excel 转 SQL ,数据库选 SQL Server 即可;也有专页说明。
SQL Server 专页: https://www.comtools.cn/excel-to-sql-server
通用工具(方言里选 SQL Server): https://www.comtools.cn/excel-to-sql
一、适合谁?
| 角色 | 场景 |
|---|---|
| 后端 / 全栈 | 种子数据、配置表初始化 |
| 测试 | 多环境重复灌数 |
| DBA / 运维 | 评审 INSERT 脚本、临时表中转 |
| 数据分析 | 业务 Excel 进库后再查 |
不适合:每天百万行的正式 ETL(那该用 SSIS / 管道);适合 一次性、可评审、可版本管理 的导入。
二、SQL Server 侧你能得到什么?
| 能力 | 说明 |
|---|---|
dbo.表名 |
顶栏直接填 dbo.Users |
#临时表 |
表名以 # 开头,可配合 CREATE TABLE |
| Unicode 字符串 | 常见输出为 N'...' |
| 空单元格 | 输出 SQL NULL |
| INSERT / UPDATE / DELETE / SELECT | 同一工具切换语句类型 |
| 批量 INSERT | 多行 VALUES,减少语句条数 |
| CREATE TABLE | 需要 staging 表时勾选 |
生成示意:
sql
INSERT INTO dbo.Users (UserId, Name, Email)
VALUES (1001, N'张三', N'zhang@example.com');
INSERT INTO dbo.Users (UserId, Name, Email)
VALUES (1002, N'李四', N'li@example.com');

三、操作步骤(对准 SSMS)
1. 整理 Excel / CSV
- 第一行表头,与字段名尽量一致(不一致可在映射里改)
- CSV 建议 UTF-8;有 BOM 一般也能识别
- 去掉合并单元格、空表头行
2. 上传并选 SQL Server
打开 https://www.comtools.cn/excel-to-sql-server 或主工具页,上传文件后:
- 数据库类型:SQL Server
- 语句类型:造数选 Insert
- 表名:
dbo.YourTable或#ImportBatch
3. 映射列
- Include:参与插入的列
- 生成数据:可用 GUID / Today 等(不读单元格)
- UPDATE/DELETE 时务必设好 WHERE 列(主键或业务唯一键)
4. 生成 → 下载 → SSMS 执行
- Generate SQL
- 行数多就 下载 .sql,别只靠复制预览
- 在 测试库 打开 SSMS 执行
- 抽查行数、
SELECT TOP 100、必要索引与约束
生产前:备份 ;大脚本 分批;可用事务包一层,失败回滚。
四、临时表中转怎么用?
适合:先导入 #Staging,清洗后再 INSERT INTO dbo.正式表 SELECT ...。
- 表名填
#StagingUsers - 勾选 CREATE TABLE + INSERT
- 在 SSMS 同一会话执行(
#临时表会话级) - 校验后再写入正式表
五、常见坑
1. 中文乱码
优先 UTF-8 CSV;或直接用 .xlsx。在 SSMS 看结果集编码是否正常。
2. 主键冲突
导入前用去重工具清 Email / 业务键:https://www.comtools.cn/excel-remove-duplicates
3. 误删 / 误更新
DELETE、UPDATE 必须有 WHERE 列 ;工具也不会生成无条件全表 DELETE。先 SELECT 预览影响行数。
4. 脚本过大
分文件生成,或开批量 INSERT 后仍按批次执行;避免一次粘贴几十万行到查询窗口。
六、和「导入向导」怎么选?
| SSMS 导入向导 | 生成 .sql 再执行 | |
|---|---|---|
| 速度(小表) | 快 | 快 |
| 可进 Git / Code Review | 难 | 易 |
| 多环境复现 | 弱 | 强 |
| 无完整导入组件 | 可能不可用 | 浏览器即可生成 |
| 超大持续同步 | 更合适用管道 | 仅适合中小批量 |
结论:要可重复、可评审 → 脚本;要点几下完事且环境齐全 → 向导。
七、相关链接
| 用途 | 链接 |
|---|---|
| SQL Server 专页 | https://www.comtools.cn/excel-to-sql-server |
| 通用 Excel 转 SQL | https://www.comtools.cn/excel-to-sql |
| INSERT 说明 | https://www.comtools.cn/excel-to-sql-insert |
| 图文教程 | https://www.comtools.cn/excel-to-sql/tutorial |
| CSV 直接转 SQL | https://www.comtools.cn/csv-to-sql |
| Excel 工具箱 | https://www.comtools.cn/Tools/Excel |
站内还有更细的导入注意事项文(编码、类型、分批),可在工具页底部或博客区找到。
八、小结
没有导入向导、或不想依赖向导时:
Excel/CSV → 选 SQL Server → 生成 INSERT → 测试库 SSMS 执行 → 再上生产。
免费、免注册;脚本可留档、可复跑。
开始生成: https://www.comtools.cn/excel-to-sql-server
工具免费使用。若你更关心「通用 Excel 转 INSERT(多数据库)」,可看姐妹篇或直接打开:https://www.comtools.cn/excel-to-sql