Ir para o conteúdo
Totalmente local

JSON para SQL CREATE TABLE

Transforme um objeto JSON ou array de objetos numa instrução SQL CREATE TABLE.

Entrada
Saída

JSON para SQL CREATE TABLE

Cole um objeto JSON ou um array de objetos, e esta ferramenta constrói uma instrução SQL CREATE TABLE pronta para usar — aponte-a para uma resposta de API de amostra ou para um registo exportado e obtenha um schema inicial em vez de escrever cada coluna manualmente.

Os tipos de coluna são inferidos a partir dos valores reais: números inteiros tornam-se INTEGER, números com parte fracionária tornam-se DECIMAL, true/false tornam-se BOOLEAN, strings em forma de 2024-01-15 ou 2024-01-15T10:30:00Z tornam-se DATE ou TIMESTAMP, e tudo o resto torna-se VARCHAR com um comprimento estimado, ou TEXT acima de 255 caracteres. Um campo marcado NOT NULL é aquele que está presente, e nunca é null, em todos os registos colados; um campo nomeado id torna-se a PRIMARY KEY. Escolha um dialeto — ANSI SQL, MySQL, PostgreSQL, SQLite ou SQL Server — para corresponder às pequenas diferenças nos nomes de tipos. Os objetos aninhados podem ser achatados em colunas com prefixo (address.city torna-se address_city) ou mantidos como uma única coluna JSON, e "Converter nomes para snake_case" transforma chaves JSON em camelCase em nomes convencionais de coluna SQL.

Com mais de um registo, ativar "Adicionar instruções INSERT" acrescenta uma instrução INSERT por registo sob o CREATE TABLE, utilizando as mesmas colunas inferidas — útil para semear uma base de dados de teste a partir de uma fixture JSON. A inferência procura sempre em todos os registos fornecidos, não apenas no primeiro, portanto um campo apenas por vezes presente fica corretamente anulável em vez de ser adivinhado incorretamente.

Tudo funciona no seu navegador. O JSON que cola, e o schema gerado a partir dele, nunca são carregados em lado nenhum — o que importa quando os dados de amostra vêm de uma exportação de produção. Copie o resultado, descarregue-o como ficheiro .txt, ou envie o resultado de volta para a entrada para continuar a refinar o schema.

FAQ

Como são decididos os tipos de coluna?
Cada coluna é inferida a partir de cada valor visto para esse campo em todos os registos que colou — não apenas no primeiro. Um campo com tipos mistos (um número num registo, uma string noutro) retrocede para uma coluna de texto, uma vez que esse é o único tipo que pode conter com segurança ambos.
O que acontece a um campo nomeado "id"?
Uma coluna nomeada id (após conversão para snake_case, se ativada) torna-se a PRIMARY KEY. A sintaxe auto-incremento ou identidade difere o suficiente entre dialetos que é deixada de fora — adicione-a você mesmo quando tiver escolhido uma estratégia.
Qual é a diferença entre as duas opções de objeto aninhado?
"Achatar com underscore" transforma um objeto aninhado como address: { city } numa coluna separada address_city. "Manter como coluna JSON" armazena o objeto aninhado inteiro como uma única coluna JSON (ou texto) em vez disso. Arrays são sempre mantidos como uma única coluna JSON/texto, uma vez que uma única linha não pode conter uma lista de comprimento variável.
Pode gerar dados para inserir assim como a tabela?
Sim. Ative "Adicionar instruções INSERT" e, se colou um array de objetos, uma instrução INSERT por registo é acrescentada sob o CREATE TABLE, utilizando as colunas e tipos já inferidos.
O meu JSON é carregado em algum lugar?
Não. A análise, inferência de tipos e geração de SQL funcionam localmente no seu navegador — o seu JSON e o schema derivado dele nunca saem do seu dispositivo.