大表在线处理容易踩的坑
几万行的导出表在本地 Excel 里还算能打开,一上到网页工具就可能:
- 上传超时或生成失败
- 预览卡顿,浏览器标签页无响应
- 单次 SQL 脚本过大,SSMS 执行缓慢甚至锁表
ComTools 多数 Excel 工具对单次数据有 约 50,000 行 上限(如 转 SQL、去重)。下面按「先瘦身、再转换、再入库」给出可落地的做法。
工具侧限制一览
| 能力 | 典型限制 | 说明 |
|---|---|---|
| Excel 转 SQL / 去重 | 约 5 万行/次 | 超出请拆分后多次处理 |
| SQL 批量 INSERT | 约每批 500 行合并 | 减轻语句数量,库端仍建议分批提交 |
| 格式化预览 | 前约 10 行 | 导出仍含全部行 |
| 去重预览 | 差异/删除行展示截断 | 下载结果为完整处理 |
技巧 1:先拆再处理
- 按 Sheet:Excel 拆分 把多 Sheet 工作簿拆成多个 xlsx,逐个去重/转 SQL。
- 按行段:在 Excel 中按月份、区域筛选后「另存为」多个文件,或拆成多个 CSV。
- 按列瘦身:导入库前删掉备注、截图、临时列,减小体积与解析时间。
技巧 2:预览只要「够用」
- 大文件优先点 下载结果 / 下载 .sql,少在页面里长时间滚动预览。
- Excel 格式化 预览仅用于确认样式;样式满意后直接导出。
- Excel 对比 差异列表最多展示约 200 条;全量 diff 可先 转 JSON 再本地对比。
技巧 3:SQL 入库分批
- 转 SQL 开启 批量 INSERT。
- 下载
.sql后在客户端按 500~1000 条语句 分段执行(或拆成多个脚本文件)。 - 导入前可暂时禁用非聚集索引,导入后重建。
- 每批后核对
@@ROWCOUNT/COUNT(*)。
详见:INSERT 指南、CSV 导入注意事项。
技巧 4:合并与去重的顺序
大文件不要先盲目合并成「超级文件」:
小文件各自去重(可选)
→ 再合并(或库内多次 INSERT)
→ 总表再去重一次(若需要)
→ 转 SQL
完整链路见:合并→去重→转 SQL 工作流。
技巧 5:格式与编码
- CSV 统一 UTF-8,避免二次转码放大耗时与乱码排查成本。
- 日期列先统一显示格式,再导出,减少库端类型转换失败重试。
- 表头规范(无空格、无重复列名)能减少映射返工——见 表头规范化。
推荐检查清单
[ ] 单文件数据行 ≤ 约 5 万,否则已拆分
[ ] 已删除无用列 / Sheet
[ ] 大操作选择下载文件,而非长时间预览
[ ] SQL 脚本已分批,测试库试跑通过
[ ] 生产导入前已备份
相关工具
- Excel 拆分
- Excel 去重
- Excel 转 SQL
- Excel 转 CSV — 文本更轻,便于管道处理
常见问题
Q:刚好超过 5 万行怎么办?
A:按时间或主键范围拆成两个文件,各生成一份脚本,顺序执行。
Q:浏览器卡死?
A:关闭其他重标签页;优先下载结果;必要时换较小文件或拆分后再试。
Q:能否提高上限?
A:在线共享环境为稳定性统一设限;更大批量建议本地脚本或库内 BULK INSERT / LOAD DATA。