JSON в SQL

Превратите массив JSON в CREATE TABLE с автоматически определёнными типами столбцов и пакетные операторы INSERT — для PostgreSQL, MySQL, SQLite или SQL Server.

Конвертер JSON в SQL работает полностью в вашем браузере. Ваши данные конвертируются на вашем устройстве и никогда не загружаются.

Открыть конвертер CSV в SQL

Об инструменте Конвертер JSON в SQL

JSON в SQL принимает массив объектов — ответ API, экспорт данных или файл с тестовыми данными — и создаёт два оператора, необходимых для загрузки его в базу данных: CREATE TABLE, чьи типы столбцов определяются по всем значениям каждого столбца, и операторы INSERT, объединённые в многострочные списки VALUES. Определение типов выполняется аккуратно: целые числа, превышающие 32 бита, становятся BIGINT, строки в формате ISO становятся TIMESTAMP, столбцы со смешанными типами безопасно упрощаются до TEXT, а каждый канонический тип выводится с учётом синтаксиса целевого диалекта — BOOLEAN приходит как TINYINT(1) в MySQL и как BIT в SQL Server. Детали, которые ломают написанные вручную скрипты, — это именно то, на чём здесь сделан акцент: идентификаторы заключаются в кавычки по правилам диалекта, чтобы столбец с именем order никогда не конфликтовал с ключевым словом, одинарные кавычки внутри значений корректно удваиваются, чтобы имена вроде O’Brien сохранялись без ошибок, отсутствующие ключи становятся NULL, а вложенные объекты сериализуются в текст JSON.

Возможности

Как использовать Конвертер JSON в SQL

  1. Вставьте массив JSON из объектов
  2. Задайте имя таблицы и выберите диалект
  3. При необходимости настройте количество строк на один INSERT
  4. Скопируйте SQL — типы столбцов сначала выводятся для проверки

Пример

Ввод

[{"id":1,"name":"O'Brien","active":true}]

Результат

CREATE TABLE "users" ("id" INTEGER, "name" TEXT, "active" BOOLEAN);
INSERT INTO "users" ("id", "name", "active") VALUES (1, 'O''Brien', TRUE);

Удвоенная кавычка в O’’Brien — именно то, что сохраняет скрипт корректным.

Частые ошибки и устранение неполадок

Часто задаваемые вопросы

Как определяются типы столбцов на основе JSON?
Каждое значение в столбце участвует в «голосовании»: целые числа дают тип INTEGER (или BIGINT при превышении 32 бит), любое дробное число делает столбец типа DOUBLE PRECISION, true/false дают BOOLEAN, строки с датой в формате ISO дают TIMESTAMP, а при любом конфликте типов столбец становится TEXT. Проверяются все строки, поэтому одно позднее дробное значение не может испортить уже определённый целочисленный столбец.
Что меняется между диалектами SQL?
Заключение идентификаторов в кавычки (двойные кавычки, обратные кавычки, квадратные скобки), написание типов (BOOLEAN против TINYINT(1) против BIT, DOUBLE PRECISION против DOUBLE против FLOAT против REAL), логические литералы (TRUE против 1) и префикс N, который SQL Server требует для текста в Unicode.
Как обрабатываются объекты с разными ключами?
Столбцы — это объединение ключей всех строк в порядке их первого появления; строки без определённого ключа получают в соответствующей ячейке значение NULL. Именно так неоднородным данным из API обычно и приходится ложиться в таблицу.
Готов ли сгенерированный скрипт к использованию в продакшене?
Он готов для импорта данных: кавычки экранированы безопасно, типы подобраны разумно. Но таблица в продакшене всё же заслуживает первичного ключа, ограничений NOT NULL и индексов — этого никакое автоматическое определение типов по данным угадать не может, поэтому сначала проверьте список типов, а затем доработайте схему.

Связанные инструменты

Все инструменты ArrayKit