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. Унікальний, ненульовий стовпець на ім'я 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 присутній і ненульовий у кожному рядку з унікальними значеннями, він позначається PRIMARY KEY. Цілий ключ також отримує AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL) чи AUTOINCREMENT (SQLite).

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