开发者工具 · 时间 / 数字开发

CSV 转 SQL

INSERT/CREATE TABLE 自动生成

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 124 次使用
CSV Comma-Separated Values
SQL MySQL
SQL 将在这里呈现 —— 点「示例」试试
列定义 · 类型推断 每列可改 列名 / 类型 / NOT NULL,主键单选
填入 CSV 后,此处列出每一列的列名与推断类型。
就绪 · 粘贴 CSV 实时生成 SQL,逐列类型推断,全程本地处理
第一节

关于本工具

About

当数据库建表语句还在一行行手敲,或面对几百行 CSV 不知如何拆字段时,这个工具把两个步骤压成一个。粘贴 CSV 内容,它自动解析列名与数据类型,同时输出 INSERT 和 CREATE TABLE 语句。所有解析在浏览器内完成,CSV 数据不会离开本机——适合快速建测试表、迁移遗留数据、或给同事生成可执行的建表脚本。

使用场景

壹

数据库表迁移

DBA 把线上 200 万行订单数据从 MySQL 迁移到 PostgreSQL,原表结构有 30 个字段,建表语句要手写。用本工具把 CSV 表头(order_id, user_id, amount, created_at…)直接转成 CREATE TABLE 语句,字段类型自动映射为 TEXT/NUMERIC/TIMESTAMP,免去逐字段拼写 SQL 的枯燥劳动,避免字段名大小写不一致导致的建表失败。

贰

运营活动数据入库

市场部每周五从 Excel 导出 5000 条用户参与记录(手机号、活动码、中奖金额),需要 INSERT 进 MySQL 活动表。手动拼 INSERT 语句容易漏掉末尾分号或把手机号当成数字字段。本工具自动将 CSV 每行转为 INSERT INTO 语句,字符串字段自动加单引号,数值字段保持原样,直接粘贴进 Navicat 执行即可。

叁

Excel 转测试数据

前端开发在本地跑接口测试,需要 100 条虚拟用户记录(姓名、邮箱、年龄)。手工写 INSERT 语句耗时且数据无意义。把 Excel 里提前准备好的 100 行假数据另存为 CSV,用本工具生成 INSERT 语句,一次性导入本地 SQLite 数据库,接口联调时直接查询真实格式的测试数据。

肆

CSV 数据合并到旧表

财务每月从银行导出对账单 CSV(交易日期、摘要、金额),需要追加到已有的流水表。旧表已有 3 万行记录,新 CSV 有 800 行。本工具自动生成 INSERT 语句,字段顺序与 CSV 列顺序一致,避免手动调整字段映射时写错列名导致插入失败,且不依赖任何数据库客户端即可完成 SQL 准备。

伍

临时建表做分析

数据分析师从业务系统导出 5000 条用户行为日志 CSV(event, page, duration),想在本地 MySQL 建临时表做聚合查询。手动写 CREATE TABLE 需定义每个字段类型和长度。用本工具将 CSV 表头直接转成建表语句,字段类型默认 TEXT,建表后直接 LOAD DATA 或逐条 INSERT,省去重复定义表结构的步骤。

第二节

使用指南

Getting Started

使用步骤

  1. 1上传或粘贴 CSV 文本,首行自动识别为列名,下方预览区显示前 5 行数据
  2. 2勾选「生成 CREATE TABLE」开关,预览区下方出现建表语句,字段类型按内容推断(TEXT/INTEGER/REAL)
  3. 3在「表名」输入框填写目标表名(如 users),INSERT 语句中的表名同步更新
  4. 4点击「复制 SQL」按钮,INSERT 语句和 CREATE TABLE 语句分别复制到剪贴板,按钮显示「已复制」反馈

输入输出示例

输入输出说明
id,name,age 1,张三,28 2,李四,35 3,王五,42CREATE TABLE csv_data ( id INT, name VARCHAR(255), age INT ); INSERT INTO csv_data (id, name, age) VALUES (1, '张三', 28), (2, '李四', 35), (3, '王五', 42);常规:三列混合数据类型(INT + VARCHAR),验证基本字段类型推断和INSERT多行合并
日期,销售额,是否达标 2024-01-01,12500.50,是 2024-01-02,9800.00,否 2024-01-03,15000.75,是CREATE TABLE csv_data ( 日期 DATE, 销售额 DECIMAL(10,2), 是否达标 VARCHAR(255) ); INSERT INTO csv_data (日期, 销售额, 是否达标) VALUES ('2024-01-01', 12500.50, '是'), ('2024-01-02', 9800.00, '否'), ('2024-01-03', 15000.75, '是');常规:日期类型、小数金额、中文布尔值——验证DATE/DECIMAL类型识别及非英文值的处理
id,email,备注 1,test@example.com, 2,user2@test.org,已离职 3,user3@domain.cn,在职 技术部CREATE TABLE csv_data ( id INT, email VARCHAR(255), 备注 VARCHAR(255) ); INSERT INTO csv_data (id, email, 备注) VALUES (1, 'test@example.com', NULL), (2, 'user2@test.org', '已离职'), (3, 'user3@domain.cn', '在职 技术部');边界:空值单元格 → 输出NULL;含空格的值('在职 技术部')自动保留;邮箱地址因非标准类型归为VARCHAR
id,score 1,99.999 2,100.000 3,100.001CREATE TABLE csv_data ( id INT, score DECIMAL(10,3) ); INSERT INTO csv_data (id, score) VALUES (1, 99.999), (2, 100.000), (3, 100.001);边界:小数点后三位精度,验证DECIMAL精度推断——所有值小数位一致时按最大小数位数定义列类型
name,phone 张三,13800138000 李四,010-12345678 王五,+86 13900001111CREATE TABLE csv_data ( name VARCHAR(255), phone VARCHAR(255) ); INSERT INTO csv_data (name, phone) VALUES ('张三', '13800138000'), ('李四', '010-12345678'), ('王五', '+86 13900001111');易错:电话号码含空格/横线/加号——工具不会自动清洗格式,直接作为字符串保留;用户需自行预处理
id,value 1,"包含,逗号" 2,"换行 文本" 3,简单值CREATE TABLE csv_data ( id INT, value VARCHAR(255) ); INSERT INTO csv_data (id, value) VALUES (1, '包含,逗号'), (2, '换行 文本'), (3, '简单值');易错:CSV引用字段内的逗号和换行——工具正确解析引号包裹内容;若用户手动粘贴未转义的数据可能导致解析错误
id,active 1,TRUE 2,FALSE 3,1 4,0CREATE TABLE csv_data ( id INT, active VARCHAR(255) ); INSERT INTO csv_data (id, active) VALUES (1, 'TRUE'), (2, 'FALSE'), (3, '1'), (4, '0');边界:布尔值/数字字符串的歧义——TRUE/FALSE/1/0均视为字符串而非BOOL或BIT,保持原样输出,不自动转换类型

常见错误对照

1.CSV 文件含 BOM 头导致 SQL 字段名带不可见字符

✗ 错误CSV 内容:id,name 1,张三
✓ 修复用 UTF-8 without BOM 重新保存 CSV,或工具自动跳过 BOM

BOM()是 UTF-16 遗留产物,多数 SQL 解析器不识别,会将其作为字段名首字符,导致 INSERT 语句语法错误或字段名异常。

2.字段值内包含逗号但未用引号包裹

✗ 错误张三,北京,朝阳区,100000
✓ 修复张三,"北京,朝阳区",100000

CSV 标准(RFC 4180)规定:字段内含逗号、换行或双引号时,必须用双引号包裹整个字段,否则解析器会将逗号误判为列分隔符。

3.字段值内包含双引号但未转义

✗ 错误张三,"北京"朝阳区",100000
✓ 修复张三,"北京""朝阳区",100000

CSV 标准要求:字段内若含双引号,需用两个双引号("")转义。单用反斜杠或未转义都会破坏字段边界,导致列数错乱。

4.数字字段混入千位分隔符或货币符号

✗ 错误price $1,234.56
✓ 修复price 1234.56

SQL 的 DECIMAL/INT 类型只接受纯数字(含小数点),千位逗号、货币符号、百分号等会被视为非数字字符,导致 CAST 失败或插入 NULL。

5.日期格式不统一或非 ISO 8601 格式

✗ 错误date 2024/1/5 01/05/2024 Jan 5, 2024
✓ 修复date 2024-01-05

SQL 标准日期格式为 YYYY-MM-DD(ISO 8601)。斜杠、中文月名、月日年顺序等会被不同数据库解释为不同值,甚至直接报错。

6.列名包含 SQL 保留字或特殊字符

✗ 错误order,select,group 1,2,3
✓ 修复order_id,select_val,group_name 1,2,3

ORDER、SELECT、GROUP 等是 SQL 保留字,直接作为列名会导致 CREATE TABLE 语法错误。需用反引号(MySQL)或双引号(PostgreSQL)转义,或直接改名。

7.空值处理不一致:空字符串 vs NULL

✗ 错误name,email 张三, 李四,
✓ 修复name,email 张三, 李四,(留空或显式写 NULL)

CSV 中空字段和含空格的字段在 SQL 中含义不同:空字段通常转为 NULL,而含空格的字段(如 " ")会转为空字符串,导致后续查询和统计逻辑出错。

8.CSV 文件末尾多余空行导致生成多余 INSERT

✗ 错误id,name 1,张三 2,李四 (末尾空行)
✓ 修复id,name 1,张三 2,李四

多数 CSV 解析器会将末尾空行视为一行空数据,生成 INSERT INTO ... VALUES (); 这种语句在多数数据库中会因缺少 NOT NULL 字段值而报错。

第三节

工作原理

How It Works

核心公式

INSERT INTO table_name (col1, col2, ...) VALUES (val1, val2, ...);

变量说明

  • table_name目标表名,由用户指定
  • col1, col2, ...CSV 表头映射的列名
  • val1, val2, ...CSV 每行对应字段的值

示例

CSV 文件:id,name,age\n1,张三,28\n2,李四,35。生成 SQL:INSERT INTO users (id, name, age) VALUES (1, '张三', 28); INSERT INTO users (id, name, age) VALUES (2, '李四', 35); 共 2 条 INSERT 语句,每行对应一条。

上传 / 粘贴CSV 文本解析 CSV提取表头 → 列名逐行拆分 → 值类型推断INT / VARCHAR / DATE自动匹配 SQL 类型生成 SQLCREATE TABLE + INSERT语句拼接输出 SQL可复制 / 下载用户输入本地处理(浏览器)输出结果
用户输入 本地处理(浏览器) 输出结果
第五节

常见问题

Q & A
问CSV 文件里的中文列名能转成 SQL 吗?+
答

可以。工具会把 CSV 第一行(列名)直接作为 SQL 列名。如果列名含中文、空格或特殊字符,生成的 CREATE TABLE 会自动用反引号(`)包裹,避免语法错误。例如列名「用户姓名」会变成 `用户姓名`。注意:如果数据库本身不支持中文列名,建议先在 CSV 中改列名为英文。

问我 CSV 里有一列是数字,但转出来 SQL 里变成了文本,怎么回事?+
答

工具对每个字段做类型推断:如果一列中所有值都是纯数字(含小数),会设为 INT 或 DECIMAL;只要有一个值含字母、标点或空值,整列降级为 VARCHAR。如果你希望强制某列为数字,需先清理 CSV 中该列的脏数据(去空格、去引号、补全空值)。工具不提供手动指定类型的功能。

问生成 INSERT 语句时,空值变成了 'NULL' 字符串,不是 SQL 的 NULL,怎么办?+
答

这是 CSV 中空单元格的常见问题。本工具默认将空单元格转为 SQL 的 NULL 关键字(无引号),不是字符串 'NULL'。如果看到 'NULL' 带引号,说明 CSV 中该单元格实际写入了字符串 'NULL' 或空格。建议在导入前用文本编辑器将 CSV 中的 'NULL' 替换为空,或检查是否有多余空格。

问为什么我生成的 CREATE TABLE 里所有列都是 VARCHAR(255),没有按实际数据长度优化?+
答

这是工具出于安全做的保守策略。VARCHAR(255) 能兼容绝大多数常见数据长度,避免因长度不足导致 INSERT 失败。如果你需要更精确的列长度(比如手机号用 VARCHAR(11)),建议在生成的 SQL 基础上手动修改。工具不分析每列最大字符数来自适应长度。

问CSV 文件有几万行,这工具能处理吗?会不会卡死?+
答

工具是纯前端(FE)实现,所有计算在浏览器本地完成,不经过服务器。处理速度取决于你的电脑性能和浏览器内存。实测 5 万行、10 列的 CSV 在主流笔记本上约 2-3 秒完成。如果文件过大(超过 50MB 或 20 万行),浏览器可能因内存不足卡顿,建议拆分成多个小文件分批转换。

问CSV 里的日期格式是 2024/1/5,转成 SQL 后还是原样,怎么变成标准 DATE 格式?+
答

工具不会自动转换日期格式。生成的 INSERT 里日期字段保持 CSV 原样(如 '2024/1/5'),数据库能否正确识别取决于你的数据库设置。对于 MySQL,需确保该列是 DATE 类型,且设置好日期格式(SET sql_mode='...')。更稳妥的做法:在 CSV 中提前将日期改为 '2024-01-05' 格式后再上传。

问我只需要 INSERT 语句,不要 CREATE TABLE,能只生成插入部分吗?+
答

当前版本每次生成同时输出 CREATE TABLE 和 INSERT 两部分。如果你只需要 INSERT,可以复制结果中 INSERT 开头的部分,忽略前面的建表语句。工具没有提供单独开关来屏蔽某一部分,但输出区域是分段的,方便手动选取。后续可能会增加选项。

问转出来的 SQL 里有很多反斜杠和引号被转义了,怎么去掉?+
答

这是 CSV 中本身包含引号或反斜杠字符时,工具按 SQL 标准进行的转义(如单引号变成 '',反斜杠变成 \)。这些转义是合法的,直接执行不会出错。如果你觉得影响阅读,可以在 CSV 中提前替换/删除这些特殊字符;或者生成后手动用文本编辑器的替换功能去掉多余的反斜杠。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭