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.
Возможности
- CREATE TABLE с типами, определёнными по всем строкам, а не только по первой
- Многострочные INSERT с настраиваемым размером пакета
- Диалекты PostgreSQL, MySQL, SQLite и SQL Server
- Заключение идентификаторов в кавычки по правилам диалекта — зарезервированные слова безопасны
- Экранирование значений: удвоение кавычек, явное указание NULL
- Отсутствующие ключи становятся NULL; вложенные структуры — текстом JSON
Как использовать Конвертер JSON в SQL
- Вставьте массив JSON из объектов
- Задайте имя таблицы и выберите диалект
- При необходимости настройте количество строк на один INSERT
- Скопируйте 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 — именно то, что сохраняет скрипт корректным.
Частые ошибки и устранение неполадок
- Столбец, похожий на числовой, получился типа TEXT. — Какое-то значение в этом столбце на самом деле является строкой — "42" в кавычках, пустая строка или значение вроде N/A. Определение типа проверяет каждую строку и при любом несоответствии переключается на TEXT — очистите отклоняющиеся значения и выполните конвертацию заново.
- Скрипт завершается ошибкой на столбце с именем order или user. — Этого не должно происходить — идентификаторы заключаются в кавычки по правилам диалекта именно для этого. Если ошибка всё же есть, проверьте, соответствует ли выбранный диалект базе данных: обратные кавычки — для MySQL, квадратные скобки — для SQL Server.
- Даты импортировались как обычный текст. — В TIMESTAMP определяются только строки в формате ISO 8601 (2024-01-15, время указывается опционально). Локальные форматы вроде 15.01.2024 неоднозначны, поэтому намеренно остаются типа TEXT — сначала приведите их к формату ISO.
Часто задаваемые вопросы
- Как определяются типы столбцов на основе 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 и индексов — этого никакое автоматическое определение типов по данным угадать не может, поэтому сначала проверьте список типов, а затем доработайте схему.
Связанные инструменты
- Конвертер CSV to SQL — Генерирует INSERT и CREATE TABLE из CSV для четырёх диалектов
- JSON в CSV — Преобразуйте массив плоских объектов JSON в CSV.
- Форматировщик JSON — Форматируйте, минимизируйте и проверяйте JSON с указанием места ошибок.
- JSON в TypeScript — Генерируйте интерфейсы TypeScript из образца JSON.
- JSON Flatten — Сплющивайте вложенный JSON в ключи с точечной нотацией или разворачивайте обратно.
- Сортировка ключей JSON — Рекурсивно сортируйте ключи объектов JSON А→Я или Я→А, сохраняя массивы.
Все инструменты ArrayKit