UTILS.
100% в браузере
🗄

JSON в SQL CREATE TABLE

Выведите SQL CREATE TABLE (и опциональные INSERT) из JSON-массива объектов, автоматически подбирая типы столбцов для MySQL, PostgreSQL или SQLite.

— результат появится здесь —

Об этом инструменте

Инструмент JSON в SQL CREATE TABLE читает JSON-массив объектов (или один объект) и выводит соответствующее определение таблицы SQL, выбирая тип каждого столбца из значений, которые он реально видит. Он работает целиком в вашем браузере — JSON разбирается нативным JSON.parse и никогда не покидает ваше устройство — поэтому вы можете вставить дамп API или экспорт базы данных и создать таблицу в один шаг.

Типы столбцов выводятся по каждому полю на всех строках: значения, которые все являются целыми числами, становятся INT (BIGINT, когда любое значение превышает 2 147 483 647), числа с десятичными дробями становятся DECIMAL(p,s), размерность которого рассчитана по наибольшему числу разрядов целой и дробной частей, указанному вами (или DOUBLE / REAL, когда вы выбираете режим с плавающей точкой), логические значения отображаются на TINYINT(1)/BOOLEAN, строки ISO 8601 отображаются на DATETIME или DATE, вложенные объекты и массивы становятся JSON/JSONB, а остальные строки становятся VARCHAR(N), где N — ближайшая степень двойки выше самого длинного значения (TEXT, как только она превышает 255). Столбец, который в любой строке равен null или отсутствует, остаётся NULLABLE; иначе он NOT NULL. Уникальный, не равный 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) (TEXT свыше 255 символов).
Какие диалекты SQL поддерживаются?
MySQL, PostgreSQL и SQLite. Переключатель диалекта переписывает имена типов (SERIAL, JSONB, TIMESTAMP для Postgres; аффинности INTEGER/REAL/TEXT для SQLite) и использует правильное экранирование идентификаторов и синтаксис авто-инкремента.
Как определяется первичный ключ?
Если присутствует столбец с именем id или uuid, не равный null в каждой строке и с уникальными значениями, он помечается PRIMARY KEY. Целочисленный ключ также получает AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL) или AUTOINCREMENT (SQLite).

Больше инструментов