跳到主内容
UniKit

CSV转SQL

把 CSV / TSV 表格转换成 SQL INSERT 语句:自研 RFC 4180 解析、支持自定义分隔符与首行表头,可生成建表语句并适配 MySQL / PostgreSQL / SQLite。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

转换设置

解析器按 RFC 4180 自研:引号包裹、字段内换行、双引号转义("")、CRLF / LF 都支持。

生成结果

这个工具能做什么

  • 把 Excel / Numbers 导出的 CSV、日志表格一次性变成 INSERT 语句,不用手工补引号和逗号。
  • 从「字段名、类型、样例数据」三件套直接生成建表脚本:勾选生成 CREATE TABLE 会按每列取值推断类型。
  • 处理欧洲风格的表格(分号分隔、字段里带逗号或换行)时,自动识别分隔符与 RFC 4180 解析能省掉大量清洗工作。
  • 需要给 MySQL、PostgreSQL、SQLite 分别出脚本时,切换方言即可换掉标识符引用与转义规则。

示例

输入

id,name,note
1,Ada,"Beijing, CN"
2,Bob,Shanghai

输出

INSERT INTO `people` (`id`, `name`, `note`) VALUES
  (1, 'Ada', 'Beijing, CN'),
  (2, 'Bob', 'Shanghai');

带逗号的单元格先由 RFC 4180 解析去掉外层引号,再作为完整字符串写进 SQL。

常见问题

字段里有逗号、换行或双引号怎么办?

按 RFC 4180 用双引号把整个字段包起来:内部的双引号写成两个(""),换行可以原样保留在引号内。解析器会把这些内容还原成单个字段值,再按 SQL 规则转义。

数字和布尔值会不会被当成字符串?

默认开启无损类型推断:只有能原样还原的文本才当数字(1、-2.5 是数字,007、1.50 保持字符串),true / false 变成 TRUE / FALSE。想要全部按文本处理,取消勾选「类型推断」即可。

空单元格写 NULL 还是空字符串?

默认写 NULL,这是导入数据时最省事的选择;如果空串在你的业务里有意义,取消勾选「空单元格写 NULL」,空单元格会写成 ''。

某一行少了几列会怎样?

页面会给出带行号的提示:多出来的列丢弃,缺少的列按空值处理(即 NULL)。这样不会因为一行格式错误就中断整个转换,但建议先修好数据再导入。

首行不是表头怎么办?

取消勾选「首行是表头」,列名会按位置生成 column1、column2……,首行内容会被当成第一行数据。如果表头里有重名列,会自动加上 _2、_3 后缀,避免生成的 SQL 里出现重复列名。

关键词:csv to sqlcsv insertsql generatorcreate tablerfc 4180mysqlpostgresqlsqliteCSV转SQL生成 INSERT表格导入分隔符

同类工具