UTILS.
100% en el navegador
🗄

JSON a CREATE TABLE de SQL

Infiere un CREATE TABLE de SQL (y INSERTs opcionales) desde un array JSON de objetos, eligiendo los tipos de columna automáticamente para MySQL, PostgreSQL o SQLite.

— la salida aparece aquí —

Acerca de esta herramienta

La herramienta JSON a CREATE TABLE de SQL lee un array JSON de objetos (o un solo objeto) e infiere una definición de tabla SQL correspondiente, eligiendo el tipo de cada columna a partir de los valores que realmente ve. Se ejecuta enteramente en tu navegador: el JSON se analiza con el JSON.parse nativo y nunca sale de tu dispositivo, así que puedes pegar un volcado de API o una exportación de base de datos y construir una tabla en un solo paso.

Los tipos de columna se infieren por campo a través de cada fila: los valores que son todos números enteros pasan a INT (BIGINT cuando algún valor excede 2.147.483.647), los números con decimales pasan a DECIMAL(p,s) dimensionado a los recuentos de dígitos enteros y fraccionarios más amplios que suministraste (o DOUBLE / REAL cuando eliges el modo flotante), los booleanos mapean a TINYINT(1)/BOOLEAN, las cadenas ISO 8601 mapean a DATETIME o DATE, los objetos y arrays anidados pasan a JSON/JSONB, y las cadenas restantes pasan a VARCHAR(N) donde N es la siguiente potencia de dos por encima del valor más largo (TEXT una vez que eso excede 255). Una columna que es null o está ausente en alguna fila se deja NULLABLE; de lo contrario es NOT NULL. Una columna única, no nula, llamada id o uuid se promueve a la PRIMARY KEY, con AUTO_INCREMENT / SERIAL / AUTOINCREMENT añadido para claves enteras.

Un interruptor de dialecto reescribe los tipos para MySQL, PostgreSQL (SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION) o SQLite (afinidades INTEGER / REAL / TEXT) y entrecomilla los identificadores con el delimitador correcto (backticks para MySQL, comillas dobles en el resto). Activa la opción de INSERTs para emitir también una sentencia INSERT por fila, con las cadenas, booleanos, números y valores JSON escapados y entrecomillados para el dialecto elegido.

Preguntas frecuentes

¿Qué entrada espera?
Un array JSON de objetos planos, como filas de una API o una exportación, o un solo objeto JSON que se trata como una tabla de una fila. Todas las claves de las filas se unen para formar las columnas; los elementos no objeto se rechazan.
¿Cómo se eligen los tipos de columna?
Por columna, a partir de cada valor visto: todo entero a INT/BIGINT, decimales a DECIMAL(p,s) o DOUBLE, booleanos a TINYINT(1)/BOOLEAN, fecha-horas ISO a DATETIME/DATE, objetos/arrays a JSON, y otras cadenas a VARCHAR(N) (TEXT por encima de 255 caracteres).
¿Qué dialectos SQL están soportados?
MySQL, PostgreSQL y SQLite. El interruptor de dialecto reescribe los nombres de tipo (SERIAL, JSONB, TIMESTAMP para Postgres; afinidades INTEGER/REAL/TEXT para SQLite) y usa el entrecomillado de identificadores y la sintaxis de autoincremento correctos.
¿Cómo se decide la clave primaria?
Si una columna llamada id o uuid está presente y es no nula en todas las filas con valores únicos, se marca PRIMARY KEY. Una clave entera también recibe AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL) o AUTOINCREMENT (SQLite).

Más herramientas