UTILS.
100% 浏览器内运行
🗄

JSON 转 SQL CREATE TABLE

从对象的 JSON 数组推断出 SQL CREATE TABLE(以及可选的 INSERT),为 MySQL、PostgreSQL 或 SQLite 自动选择列类型。

— 输出将显示在这里 —

关于此工具

JSON 转 SQL CREATE TABLE 工具读取一个对象的 JSON 数组(或单个对象),并推断出匹配的 SQL 表定义,根据实际看到的值为每一列选择类型。它完全在你的浏览器中运行——JSON 用原生 JSON.parse 解析,永不离开你的设备——因此你可以粘贴 API 转储或数据库导出,一步搭建出一张表。

列类型按字段跨所有行推断:全为整数的值变为 INT(当任何值超过 2,147,483,647 时变为 BIGINT),带小数的数字变为 DECIMAL(p,s),其大小由你提供的最宽整数和小数位数确定(或在你选择浮点模式时变为 DOUBLE / REAL),布尔值映射为 TINYINT(1)/BOOLEAN,ISO 8601 字符串映射为 DATETIME 或 DATE,嵌套对象和数组变为 JSON/JSONB,其余字符串变为 VARCHAR(N),其中 N 是大于最长值的下一个 2 的幂(超过 255 时变为 TEXT)。任何行中为 null 或缺失的列会保留 NULLABLE;否则为 NOT NULL。名为 id 或 uuid 的唯一非空列会被提升为 PRIMARY KEY,整数键会加上 AUTO_INCREMENT / SERIAL / AUTOINCREMENT。

方言开关会为 MySQL、PostgreSQL(SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION)或 SQLite(INTEGER / REAL / TEXT 亲和性)重写类型,并用正确的分隔符为标识符加引号(MySQL 用反引号,其他用双引号)。开启 INSERT 选项还可为每行输出一条 INSERT 语句,其中字符串、布尔值、数字和 JSON 值都会按所选方言转义并加引号。

常见问题

它期望什么输入?
一个扁平对象的 JSON 数组,例如来自 API 或导出的行,或一个被视为单行表的单个 JSON 对象。所有行中的键会合并以构成列;非对象元素会被拒绝。
列类型如何选择?
按列从看到的每个值来定:全整数变为 INT/BIGINT,小数变为 DECIMAL(p,s) 或 DOUBLE,布尔值变为 TINYINT(1)/BOOLEAN,ISO 日期时间变为 DATETIME/DATE,对象/数组变为 JSON,其他字符串变为 VARCHAR(N)(超过 255 字符时变为 TEXT)。
支持哪些 SQL 方言?
MySQL、PostgreSQL 和 SQLite。方言开关会重写类型名称(Postgres 用 SERIAL, JSONB, TIMESTAMP;SQLite 用 INTEGER/REAL/TEXT 亲和性),并使用正确的标识符引用和自增语法。
主键如何决定?
如果存在名为 id 或 uuid 的列且在每行中都非空并具有唯一值,它会被标记为 PRIMARY KEY。整数键还会获得 AUTO_INCREMENT(MySQL)、SERIAL(PostgreSQL)或 AUTOINCREMENT(SQLite)。

更多工具