在线 CSV 转 SQL 工具:将表格数据导入数据库
什么是 CSV 转 SQL
把 CSV 表格变成可粘贴执行的 INSERT 语句,方便往开发库灌演示数据、写文档示例,或做一次性小迁移。试试 CSV 转 SQL:同一输入还可输出 Markdown 表或 HTML 表。
与本站 MySQL 风格输出一致的示例
CSV:
id,name,email,age
1,张三,zhang@example.com,28
2,李四,li@example.com,32
SQL(反引号标识符;非空值一律字符串引号;数字不会裸写):
INSERT INTO `users` (`id`, `name`, `email`, `age`) VALUES
('1', '张三', 'zhang@example.com', '28'),
('2', '李四', 'li@example.com', '32');
把方言切到 PostgreSQL 后,标识符变为 "users" / "id"。若需要真正的整型列,请用 staging 表 + INSERT ... SELECT CAST(...),不要指望转换器「猜类型」。
为什么还需要这一步
- 开发库种子数据:几十到几百行,手写 INSERT 太慢
- 文档 / README 示例:Markdown 表模式可直接贴进文档
- 联调前造数:配合 CSV/JSON 从接口样例走到表结构演示
- 不是生产百万行 ETL——那种场景用
COPY/LOAD DATA/ 正式管道
如何使用(真实 UI)
- 粘贴 CSV(第一行表头)
- 选择输出:SQL INSERT / Markdown Table / HTML Table
- SQL 模式下填写表名(默认
my_table),并选择标识符风格(MySQL 反引号 或 PostgreSQL 双引号) - 转换并复制
分隔符:解析函数支持自定义 delimiter,但 UI 当前固定逗号。分号 CSV 请先经 CSV/TSV 规范化。
实现注记(与 parseCSV / csvToSQL 对齐)
解析
- 支持引号字段、
""转义、引号内换行 - 表头
trim;空行跳过 - 文件开头的 UTF-8 BOM 会先剥离(Excel 导出不再把首列表头弄成带不可见前缀的
id) - 某行列数不足时,缺列补空字符串(比双向 CSV/JSON 工具更宽容)
- 不会把字面量
null/NULL当成 SQL NULL——只有空单元格变成NULL
SQL 生成
- 标识符:MySQL 风格双写内部反引号;PostgreSQL 风格双写内部
" - 值:空 →
NULL;非空 →'...',内部单引号'→'' - 不做数字裸写、布尔识别、日期解析
- 一次生成一条多行
INSERT ... VALUES (...), (...);
Markdown / HTML
- Markdown:单元格内
|转义为\|,避免拆表 - HTML:对
& < > "做实体转义,适合贴进静态页预览
仍在转换器之外的 Excel 坑
- 日期序列号、前导零丢失属于导出阶段——先以文本列重导 CSV
- 欧洲分号 CSV 仍需先做分隔符规范化
大文件边界
- 浏览器内拼超大 SQL 字符串会卡顿;上千行演示尚可,万行以上改用数据库原生装载
- 生成结果没有事务、没有
ON CONFLICT、没有批大小控制——需要幂等重跑时自行包事务并加主键策略
RFC 4180 四大边界(读 CSV 时)
- 字段内逗号 → 必须加引号
- 字段内双引号 → 写成
"",不是反斜杠 - 字段内换行 → 合法;
wc -l与逻辑行数常不一致 - UTF-8 BOM → 本工具解析前剥离;走
COPY/LOAD时仍建议先剥
装载路径:INSERT vs COPY / LOAD
| 路径 | 适用 | 备注 |
|---|---|---|
| 本站批量 INSERT | 小表、演示、文档 | 可选 MySQL / PostgreSQL 引号风格 |
PostgreSQL COPY ... CSV HEADER | 大文件 | 快;注意编码 |
MySQL LOAD DATA | 大文件 | 路径与 LOCAL 安全策略 |
| SQLite | 事务内多 INSERT | 无原生 CSV bulk(扩展除外) |
生产导入:TEXT staging → 可见的 CAST/:: 转型 → 正式表。类型决策留在 SQL 里审查,而不是藏在转换器里。
Excel 方言与可重复导入
- 分隔符:中文 Windows 有时是逗号,欧洲语言环境常是分号——分号文件先走 CSV/TSV
- 前导零 / 日期:在表格里把单号、邮编列设为文本再导出
- 幂等重跑:本工具不生成
ON CONFLICT/REPLACE——开发库反复灌数时先DELETE/TRUNCATE,或自备 upsert
把 CSV→SQL 当成「可见的脚手架」,把类型与冲突策略留在你能审查的 SQL 里。
与 JSON / YAML / 格式化互链
| 步骤 | 工具 |
|---|---|
| 表格 ↔ 对象 | CSV/JSON、JSON→CSV |
| 分隔符 | CSV/TSV |
| INSERT 排版 / 压缩 | SQL 格式化 |
| 配置旁路 | YAML↔JSON |
| 博文 | CSV/JSON 指南、JSON/CSV 指南、SQL 格式化指南 |
FAQ
字段里有换行怎么办?
用双引号包裹该字段。本站解析器按引号状态拼记录,不只按物理行切。
为什么数字两边有引号?
全部当文本插入,避免 00123 变整数。入库后用 SQL 转型。
字符串 null 会变成 SQL NULL 吗?
不会。只有空单元格 → NULL。这是有意区分,防止把合法文本「null」吃掉。
PostgreSQL 报语法错?
在方言控件里选 PostgreSQL,或手动把 `col` 改成 "col";单引号字符串转义('')两边通用。
大量导入很慢?
小数据用本工具;大数据用 COPY/LOAD DATA,并考虑临时禁用非必要索引、按批提交。
粘贴前先包事务、再核对行数
生成的 INSERT 很容易连跑两遍。先用 BEGIN / ROLLBACK 包住种子块,核对行数后再 COMMIT。共享开发库优先用临时 schema 或表后缀(_seed)。SQL 格式化 方便人读宽 INSERT,但不校验类型——CAST / :: 仍写在后续手写 SQL 里。
标识符引号 ≠ 字符串引号
MySQL 反引号与 PostgreSQL 双引号保护的是标识符(含空格或保留字的列名),不是字符串。值仍用单引号并以 '' 转义。混用(在 PostgreSQL 里把 "hello" 当值)会变成列引用,报出「缺列」这类看起来与 CSV 无关的错。复制前在 CSV→SQL 选对方言。
本文由 ToolVault 工具匣提供。相关工具:CSV→SQL、CSV/JSON、SQL 格式化、CSV/TSV。更多见首页。
相关工具
相关文章
HTML 表格转 JSON 怎么保留行列结构?
把网页里的 HTML 表格转成 JSON,怎么保留表头、处理合并单元格、保持嵌套结构?逐步方法并附本站 HTML 表格转 JSON 工具。
Excel 转 JSON 后日期变成数字 / 中文乱码,怎么办?
把 Excel 转成 JSON 时日期变 44927 这种数字、中文乱码、空单元格丢失怎么办?讲清 Excel 日期序列号与编码坑,并附本站 Excel 转 JSON 工具。
表格数据互转完全指南:Excel、CSV、JSON、Markdown、HTML 一站式转换
Excel、CSV、JSON、Markdown、HTML 五种表格格式互转:分隔符、表头、空单元格与合并单元格边界,以及对应在线工具实操。