UTILS.
100% no navegador
🗄

JSON para SQL CREATE TABLE

Infira um SQL CREATE TABLE (e INSERTs opcionais) a partir de um array JSON de objetos, escolhendo os tipos de coluna automaticamente para MySQL, PostgreSQL ou SQLite.

— a saída aparece aqui —

Sobre esta ferramenta

A ferramenta JSON para SQL CREATE TABLE lê um array JSON de objetos (ou um único objeto) e infere uma definição de tabela SQL correspondente, escolhendo o tipo de cada coluna a partir dos valores que ela realmente vê. Ela roda inteiramente no seu navegador — o JSON é analisado com o JSON.parse nativo e nunca sai do seu dispositivo — então você pode colar um dump de API ou uma exportação de banco de dados e montar uma tabela em um único passo.

Os tipos de coluna são inferidos por campo em todas as linhas: valores que são todos números inteiros viram INT (BIGINT quando algum valor excede 2.147.483.647), números com decimais viram DECIMAL(p,s) dimensionados para as maiores contagens de dígitos inteiros e fracionários que você forneceu (ou DOUBLE / REAL quando você escolhe o modo float), booleanos mapeiam para TINYINT(1)/BOOLEAN, strings ISO 8601 mapeiam para DATETIME ou DATE, objetos e arrays aninhados viram JSON/JSONB, e strings restantes viram VARCHAR(N) onde N é a próxima potência de dois acima do valor mais longo (TEXT quando isso excede 255). Uma coluna que é null ou ausente em qualquer linha é deixada NULLABLE; caso contrário, é NOT NULL. Uma coluna única, não nula, chamada id ou uuid é promovida a PRIMARY KEY, com AUTO_INCREMENT / SERIAL / AUTOINCREMENT adicionado para chaves inteiras.

Um alternador de dialeto reescreve os tipos para MySQL, PostgreSQL (SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION) ou SQLite (afinidades INTEGER / REAL / TEXT) e cita os identificadores com o delimitador correto (crases para MySQL, aspas duplas nos outros). Ative a opção de INSERTs para também emitir uma instrução INSERT por linha, com strings, booleanos, números e valores JSON escapados e citados para o dialeto escolhido.

Perguntas frequentes

Qual entrada ela espera?
Um array JSON de objetos planos, como linhas de uma API ou exportação, ou um único objeto JSON que é tratado como uma tabela de uma linha. Todas as chaves nas linhas são unidas para formar as colunas; elementos não-objeto são rejeitados.
Como os tipos de coluna são escolhidos?
Por coluna, a partir de cada valor visto: todos inteiros para INT/BIGINT, decimais para DECIMAL(p,s) ou DOUBLE, booleanos para TINYINT(1)/BOOLEAN, datas-hora ISO para DATETIME/DATE, objetos/arrays para JSON, e outras strings para VARCHAR(N) (TEXT acima de 255 caracteres).
Quais dialetos SQL são suportados?
MySQL, PostgreSQL e SQLite. O alternador de dialeto reescreve os nomes de tipo (SERIAL, JSONB, TIMESTAMP para Postgres; afinidades INTEGER/REAL/TEXT para SQLite) e usa a citação de identificador e a sintaxe de auto-incremento corretas.
Como a chave primária é decidida?
Se uma coluna chamada id ou uuid estiver presente e não nula em todas as linhas com valores únicos, ela é marcada como PRIMARY KEY. Uma chave inteira também recebe AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL) ou AUTOINCREMENT (SQLite).

Mais ferramentas