JSON 转 SQL INSERT
把 JSON 对象数组转换成 SQL INSERT 语句,可选生成适用于 MySQL、PostgreSQL、SQLite、SQL Server 或 Oracle 的 CREATE TABLE,并支持嵌套值。
对象中缺少的键会以 NULL 插入。
| 列 | 类型 | 出现的值 | NULL / 缺失 |
|---|---|---|---|
| id | INTEGER | 整数 | 0 |
| name | VARCHAR(12) | 文本 | 0 |
| active | BOOLEAN | true/false | 0 |
| balance | NUMERIC(6,2) | 小数 | 1 |
| joined | DATE | 日期 | 0 |
| tags | JSONB | JSON | 1 |
| address | JSONB | JSON | 1 |
API 响应、导出数据和测试数据通常是 JSON,而数据库需要的是 SQL。粘贴对象数组,就能得到多行合并的 INSERT 语句,以及可选的 CREATE TABLE,其列类型由值推断得出:整数、精度合适的小数、布尔值、日期、文本和 JSON。缺少某个键的对象会得到 NULL;嵌套的对象和数组可以存为 JSON,也可以展开成用点号命名的列。标识符、字符串和布尔值会按 MySQL、PostgreSQL、SQLite、SQL Server 或 Oracle 各自的写法输出。
使用方法
- 粘贴对象的 JSON 数组(单个对象或 {"data": […]} 的形式也可以)。
- 输入表名并选择数据库。
- 选择嵌套对象是存为 JSON 列还是展开成多列。
- 按需包含 CREATE TABLE 或 DROP TABLE,或指定用于 upsert 的键。
- 复制 SQL。
计算公式
列 = 任一对象中出现过的所有键(按首次出现的顺序) · 每个对象一个 VALUES 元组 · 缺少的键 → NULL
类型由值决定:整数为 INTEGER(超出 ±2,147,483,647 则为 BIGINT),其他数字按位数生成 DECIMAL(p,s),true/false 为 BOOLEAN(没有布尔类型的数据库用 BIT、NUMBER(1) 或 1/0),所有值都是有效日期的 ISO 日期字符串为 DATE 或 TIMESTAMP,其他字符串为 VARCHAR(最长长度) 或 TEXT,对象和数组为 JSON、JSONB、NVARCHAR(MAX) 或 CLOB。值类型混杂的列会变成文本。字符串中的单引号会写成两个,MySQL 中的反斜杠也会写成两个。
示例
示例中的 3 位客户会生成 CREATE TABLE "customers",列为 id INTEGER、name VARCHAR(12)、active BOOLEAN、balance NUMERIC(6,2)、joined DATE、tags JSONB 和 address JSONB,以及一条包含 3 行的 INSERT。O'Brien 写成 'O''Brien',Lin 缺少的 tags 和 address 以及为 null 的 balance 都变成 NULL,Ada 的 address 存为 '{"city":"London"}'。
常见问题
如果各个对象的键不一样怎么办?
只要在任一对象中出现过的键都会成为一列,顺序按首次出现的先后。没有该键的对象会得到 NULL。
展开还是用 JSON 列?
如果要按嵌套字段(address.city)筛选或关联,就展开;如果结构不固定或只需保存,就保留为 JSON。数组始终存为 JSON。
很大的数字安全吗?
不超过 9,007,199,254,740,991 的整数是精确的。更大的 ID 在任何基于 JavaScript 的工具中都会丢失位数,请在 JSON 中给它们加引号,以文本形式保留。
我的数据会被上传吗?
不会。SQL 在浏览器中生成。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/json-to-sql-insert-tool/
引用此工具
kakaoCalc. (2026, November 8). JSON 转 SQL INSERT. https://kakao.mobile/zh/tools/json-to-sql-insert-tool/
“JSON 转 SQL INSERT.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/json-to-sql-insert-tool/.