Конвертируйте SQL CREATE TABLE в JSON
Коротко об инструменте
Страница читает не данные, а объявление таблицы: из выражения CREATE TABLE users (id INT, name VARCHAR(50), age INT) получается JSON с именем таблицы и списком колонок, у каждой из которых записан тип. Так схему из дампа переносят в описание API, в фикстуру для тестов или в задачу аналитику, не поднимая при этом сервер базы. Разбор выполняет скрипт страницы, ваш SQL остаётся в браузере. Запросы SELECT и INSERT здесь не обрабатываются. Смотрите также: показать полученную схему таблицей, проверить структуру схемы на ошибки, перенести схему в YAML.
Нет. Страница разбирает объявление колонок, то есть отвечает на вопрос «какие поля есть в таблице», а не «что в них лежит». Инструкции INSERT со значениями она не читает. Если у вас на руках выгрузка данных, конвертируйте её из CSV: страница «CSV в JSON» соберёт массив объектов, где заголовок файла станет набором ключей.
Формат объявления колонок у MySQL, PostgreSQL и SQLite почти совпадает, поэтому простое CREATE TABLE с перечислением полей и типов разбирается одинаково. Специфика диалектов начинается дальше: ENGINE и CHARSET у MySQL, SERIAL и схемы у PostgreSQL, кавычки-обратные апострофы вокруг имён. Такие хвосты лучше срезать перед вставкой, оставив скобки с колонками.
Разбор здесь простой и нацелен на пару «имя колонки — тип». Ограничения, записанные отдельными строками после списка полей, в результат могут не попасть, а модификаторы вроде NOT NULL DEFAULT 0 иногда приклеиваются к типу текстом. Проверьте вывод глазами и допишите ограничения вручную, если схема идёт дальше в генератор миграций.
Вставляйте по одному выражению за раз. Разбор рассчитан на одно объявление, и при нескольких CREATE TABLE в поле результат окажется неполным или спутанным. Разбейте дамп на отдельные выражения, прогоните каждое и склейте объекты в общий массив уже в редакторе — так вы ещё и заметите таблицы, которые парсер не осилил.
Проверьте три вещи: есть ли в тексте ключевые слова CREATE TABLE, закрыта ли круглая скобка со списком колонок и не остались ли внутри многострочные комментарии. Скопированный из клиента фрагмент часто тянет за собой обратные апострофы и переносы, которые сбивают разбор. Уберите лишнее и оставьте одну строку в стиле подсказки поля.
Разбор целиком выполняет скрипт внутри открытой страницы: содержимое поля «SQL на входе» не отправляется ни на it-market.pro, ни куда-либо ещё. Для схемы это существенно — по именам таблиц и колонок нередко видно устройство продукта. Тем не менее, если правила вашей компании запрещают вставлять схему в веб-страницы, следуйте им.
До: CREATE TABLE users (id INT, name VARCHAR(50), age INT);
После: { "table": "users", "columns": [ {"name": "id", "type": "INT"}, {"name": "name", "type": "VARCHAR(50)"}, {"name": "age", "type": "INT"} ] } До: CREATE TABLE orders (id INT, total DECIMAL(10,2), created_at DATETIME);
После: { "table": "orders", "columns": [ {"name": "id", "type": "INT"}, {"name": "total", "type": "DECIMAL(10,2)"}, {"name": "created_at", "type": "DATETIME"} ] } Оценка и фидбек помогают понять, что улучшать дальше.