为什么要串成一条工作流
实际导入很少是「一个干净文件直接 INSERT」:
- 市场、销售、客服各导出一份 Excel
- 合并后同一客户邮箱、订单号可能重复
- 不去重就灌库会主键冲突或重复统计
ComTools 可在浏览器里走完:合并 → 去重 → 转 SQL,再在测试库执行脚本。
多文件 xlsx
↓ Excel 合并(多 Sheet 进一个工作簿)
总表(按 Sheet 或挑主表)
↓ Excel 重复删除
干净表
↓ Excel 转 SQL(INSERT)
.sql 脚本 → 测试库 → 生产库
第 1 步:合并多个 Excel
打开 Excel 合并:
- 一次选择多个
.xlsx/.xlsm(可「添加更多」)。 - 用 ↑↓ 调整文件顺序(先选的在前)。
- 点击 开始合并,下载
merged.xlsx。
要点:合并是把各文件的 Sheet 都保留进一个工作簿,不会把多表行自动堆到同一张表。若各部门表结构相同、需要「行追加成一张表」,合并后请在 Excel 中复制粘贴到同一 Sheet,或对每个源文件分别转 SQL 后在库里多次 INSERT。
详见:Excel 合并指南。
第 2 步:按列去重
打开 Excel 重复删除:
- 上传合并后的文件,选择要处理的 Sheet。
- 勾选去重键(如
Email、OrderId);全不选则按整行比较。 - 保留「第一条」或「最后一条」。
- 可选:去除首尾空格、忽略大小写。
- 预览去重 → 确认重复组 → 下载 干净的 xlsx/csv。
| 场景 | 建议 |
|---|---|
| 客户邮箱列表 | 键 = Email,保留第一条 |
| 订单号唯一 | 键 = OrderId |
| 先看重复再删 | 输出模式选「标记重复行」 |
| 只要唯一 ID 做 IN 查询 | 「仅唯一值」→ 文本转 SQL |
详见:Excel 去重指南。
第 3 步:生成 INSERT 脚本
打开 Excel 转 SQL:
- 上传去重后的文件,选 Sheet。
- 语句类型选 Insert,填写表名(如
dbo.Customers)。 - 选数据库类型(SQL Server / MySQL / PostgreSQL 等)。
- 勾选要导入的列;建议开启 批量 INSERT。
- 生成后复制或下载
.sql,先在测试库执行。
若目标是改已有数据或按 ID 删除,改用 UPDATE / DELETE。编码与分批见 CSV 导入注意事项。
详见:Excel 生成 INSERT。
可选中间步骤
| 步骤 | 何时用 |
|---|---|
| CSV 转 Excel | 源文件是 CSV |
| Excel 格式化 | 给领导看的中间表要美化 |
| Excel 对比 | 去重前后各存一版,核对删了什么 |
| Excel 拆分 | 合并后只处理某一个业务 Sheet |
执行检查清单
[ ] 合并文件顺序正确,Sheet 名称可读
[ ] 去重键与业务主键一致,预览行数合理
[ ] INSERT 列映射与库表字段一致
[ ] 测试库试跑,ROWCOUNT / COUNT(*) 与 Excel 一致
[ ] 生产库已备份,脚本分批执行
相关文章(本工作流)
常见问题
Q:合并后只有一个 Sheet,去重报错?
A:确认上传的是合并结果,且该 Sheet 有表头;空表或无数据行会失败。
Q:必须三步都做吗?
A:单文件可跳过合并;已无重复可跳过去重;只导出给前端可走 转 JSON 而不是 SQL。
Q:行级合并多文件成一张表?
A:当前合并工具按 Sheet 聚合。结构相同的多文件可:各自去重 → 各自 INSERT,或在 Excel 中手工追加行后再转 SQL。