# JSON 转 SQL 在线工具 - 生成建表语句与批量 INSERT

> 免费在线把 JSON 数组或 CSV 转成 SQL：自动推断列类型与主键，生成 CREATE TABLE、批量 INSERT 与 UPSERT，支持 MySQL、PostgreSQL、SQLite、Oracle，可反向转换。

- 网址: https://qilingtools.com/zh/json-to-sql
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [格式转换](https://qilingtools.com/zh/tags/convert), [开发](https://qilingtools.com/zh/tags/dev), [数据格式](https://qilingtools.com/zh/tags/data)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

接口返回的 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。数据只在浏览器本地处理。

## 使用步骤

1. 粘贴 JSON 数组或 CSV，或打开 .json / .csv 文件
2. 选择数据库方言、表名、主键、嵌套对象处理方式和 INSERT / UPSERT 模式，必要时修改列类型
3. 复制或下载生成的 SQL；反向转换时切到“SQL INSERT → JSON”

## 功能特点

- 跨所有行推断列类型、精度、长度、可空与唯一性
- 自动猜测主键，可手动指定或不设主键
- MySQL、PostgreSQL、SQLite、SQL Server、Oracle 五种方言
- 按方言转义字符串：引号、反斜杠、Unicode、超长文本
- CREATE TABLE（可选 DROP、IF NOT EXISTS）与分批多行 INSERT
- UPSERT：ON DUPLICATE KEY / ON CONFLICT / MERGE
- 嵌套对象展开为多列或存为 JSON 列
- 反向：解析 INSERT 语句（含 Oracle INSERT ALL）为 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 导出的数据请保持勾选“反斜杠是转义符”。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
