O que esta ferramenta faz
Uma amostra JSON vira um CREATE TABLE.
{ "id": 1, "firstName": "Ada", "score": 9.5, "address": { "city": "Paris" } }
CREATE TABLE `root` (
`id` BIGINT NOT NULL,
`first_name` VARCHAR(255) NOT NULL,
`score` DOUBLE NOT NULL,
`address` JSON NOT NULL
);
Os nomes de coluna vão em snake_case e entre crases, então uma palavra reservada ou um hífen numa chave não é problema. Duas chaves que dão o mesmo nome levam sufixo em vez de se fundirem.
Uma coluna do tamanho do valor
As strings viram VARCHAR(255) — salvo quando a amostra mostra que não cabem:
{ "bio": "…301 caracteres…" }
`bio` TEXT NOT NULL
O MySQL em modo estrito — padrão desde o 5.7 — recusa um valor mais longo que a coluna com o erro 1406. Um VARCHAR(255) aqui teria devolvido uma tabela incapaz de conter o documento que a gerou. Era um defeito real, encontrado ao escrever esta página e corrigido.
O limite vem do valor mais longo da amostra: é um piso, não uma promessa. Se as suas strings de produção forem mais longas que o que você colou, alargue a coluna.
Todas as linhas, não só a primeira
[{ "a": 1 }, { "a": 2, "b": "x" }]
CREATE TABLE `root_item` (
`a` BIGINT NOT NULL,
`b` VARCHAR(255) NULL
);
A tabela era construída só com o primeiro objeto: a segunda linha da sua própria amostra falhava ao inserir — Unknown column 'b'. Agora as colunas são a união de todos os objetos, e uma chave ausente em alguns é nullable, porque é.
O tipo segue a mesma regra. Uma chave que vale 1 numa linha e "x" na seguinte ficava com o tipo da primeira que aparecesse, e o outro valor não tinha mais coluna onde entrar; agora recebe uma coluna JSON, que segura as duas. Um valor de 300 caracteres que só aparece na décima linha alarga a coluna para TEXT como se estivesse na primeira.
O que não é inventado
- Nem chave primária, nem índice, nem cláusula de engine ou charset. São decisões sobre os seus dados e o seu servidor; um documento nada diz sobre elas.
NOT NULLonde havia valor,NULLpara umnulle para uma chave ausente em algumas linhas.- Objetos e arrays viram colunas
JSON. Sem tabela ligada nem chave estrangeira: uma amostra não pode mostrar uma relação, e inventar uma empilharia três palpites.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.