UTILS.
Privadas por padrão
🗄

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.

Seus arquivos ficam neste dispositivo

Os arquivos são processados no navegador, nunca enviados. O site baixa o código e os recursos necessários. Sem contas ou rastreadores.

Use Baixar para salvar esta ferramenta em um único arquivo HTML para uso offline.

Privacidade →
— 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