Qué hace esta herramienta
Una muestra JSON pasa a ser un 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
);
Los nombres de columna van en snake_case y entre acentos graves, así que una palabra reservada o un guion en una clave no es problema. Dos claves que dan el mismo nombre llevan sufijo en vez de fundirse.
Una columna a la medida del valor
Las cadenas pasan a VARCHAR(255), salvo cuando la muestra enseña que no caben:
{ "bio": "…301 caracteres…" }
`bio` TEXT NOT NULL
MySQL en modo estricto —el valor por defecto desde 5.7— rechaza un valor más largo que la columna con el error 1406. Un VARCHAR(255) aquí te habría dado una tabla incapaz de contener el documento que la generó. Era un defecto real, encontrado al escribir esta página y corregido.
El límite viene del valor más largo de la muestra: es un suelo, no una promesa. Si tus cadenas de producción son más largas que lo que pegaste, ensancha la columna.
Todas las filas, no solo la primera
[{ "a": 1 }, { "a": 2, "b": "x" }]
CREATE TABLE `root_item` (
`a` BIGINT NOT NULL,
`b` VARCHAR(255) NULL
);
La tabla se construía solo con el primer objeto: la segunda fila de tu propia muestra fallaba al insertarse —Unknown column 'b'—. Ahora las columnas son la unión de todos los objetos, y una clave que falta en algunos es nullable, porque lo es.
El tipo sigue la misma regla. Una clave que vale 1 en una fila y "x" en la siguiente tomaba el tipo de la primera que apareciera, y el otro valor se quedaba sin columna donde entrar; ahora recibe una columna JSON, que sostiene las dos. Un valor de 300 caracteres que solo aparece en la décima fila ensancha la columna a TEXT igual que si hubiera sido la primera.
Lo que no se inventa
- Ni clave primaria, ni índice, ni cláusula de motor o juego de caracteres. Son decisiones sobre tus datos y tu servidor; un documento no dice nada de ellas.
NOT NULLallí donde había un valor,NULLpara unnully para una clave ausente en algunas filas.- Los objetos y arrays pasan a columnas
JSON. Sin tabla relacionada ni clave foránea: una muestra no puede enseñar una relación, e inventar una apilaría tres suposiciones.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.