🛢️JSON 转 SQL 在线工具 - 生成建表语句与批量 INSERT
接口返回的 JSON、爬下来的数据或 Excel 导出的 CSV,想快速导入数据库做测试或分析?把 JSON 数组(或单个对象、{ "data": [...] } 包装、二维数组)或带表头的 CSV 粘贴进来,工具会扫描所有行推断每一列的类型:整数、大整数、带精度的小数、浮点、布尔、日期、日期时间(区分是否带时区)、字符串长度和 JSON,同时判断是否可为空、是否唯一,并猜出主键(id、表名_id 等);推断结果可以逐列手动修改。嵌套对象可以展开成“前缀_字段”多列,或整体存成 JSON 列。支持 MySQL、PostgreSQL、SQLite、SQL Server、Oracle 五种方言,各自使用正确的标识符引号、类型名、布尔写法与 JSON 类型,字符串按方言转义(MySQL 的反斜杠、SQL Server 的 N 前缀、Oracle 超长字符串拆成 TO_CLOB 等)。可以生成 DROP / CREATE TABLE、按指定行数分批的多行 INSERT,或 UPSERT:MySQL 的 ON DUPLICATE KEY UPDATE、PostgreSQL / SQLite 的 ON CONFLICT、SQL Server 与 Oracle 的 MERGE。反方向也行:粘贴 INSERT 语句,解析成 JSON。数据只在浏览器本地处理。
免费 · 无需注册 · 浏览器本地处理最后更新:
正在加载工具...
如何使用JSON 转 SQL
- 1粘贴 JSON 数组或 CSV,或打开 .json / .csv 文件
- 2选择数据库方言、表名、主键、嵌套对象处理方式和 INSERT / UPSERT 模式,必要时修改列类型
- 3复制或下载生成的 SQL;反向转换时切到“SQL INSERT → JSON”
常见问题
- 列类型是怎么推断的?
- 工具会检查每一列在所有行中的值:全是整数就用 INT(超过 21 亿用 BIGINT),有小数就按最大整数位和小数位生成 DECIMAL(p,s),true/false 是布尔,形如 2024-01-31 的字符串是日期,带时间的是 DATETIME / TIMESTAMP(有时区时 PostgreSQL 用 TIMESTAMPTZ),对象和数组是 JSON,其余是按最大长度取整的 VARCHAR 或 TEXT。出现过 null 或缺失的列允许为空。CSV 里像 007 这种带前导零的值会保留为字符串。
- 生成的 SQL 能直接执行吗?
- 能。字符串会按目标数据库的规则转义,例如 MySQL 会转义反斜杠,PostgreSQL 只把单引号加倍,SQL Server 使用 N 前缀保留中文。我们在 SQLite 和 PostgreSQL 上实际执行过生成的建表、INSERT 与 UPSERT 语句。数据量很大时建议调小“每条 INSERT 的行数”,避免超过 max_allowed_packet 等限制。
- 嵌套的 JSON 对象怎么处理?
- 默认把嵌套对象展开成多列,例如 address.city 变成 address_city 列,分隔符可改;数组始终存为 JSON。也可以选择“整体存为 JSON 列”,此时 MySQL 用 JSON、PostgreSQL 用 JSONB、SQL Server 与 Oracle 用文本加 JSON 校验约束。
- 怎么把 INSERT 语句转回 JSON?
- 切换到“SQL INSERT → JSON”,粘贴一条或多条 INSERT 语句即可。支持反引号、双引号、方括号标识符,多行 VALUES,N'…'、E'…'、X'…' 字符串和 Oracle 的 INSERT ALL;多张表会按表名分组输出。MySQL 导出的数据请保持勾选“反斜杠是转义符”。