Convertidor de JSON a SQL

Pega un array de objetos JSON, como una respuesta de API o una exportación, y obtén el SQL que crea la tabla y carga las filas. Los tipos de columna se eligen según los valores y las comillas siguen el dialecto que elijas.

Filas: 3, columnas: 6.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se usa

  1. Pega un array de objetos JSON. Un solo objeto también sirve y da una fila.
  2. Escribe el nombre de la tabla (vale esquema.tabla) y elige MySQL, PostgreSQL o SQLite.
  3. Marca si quieres CREATE TABLE, sentencias INSERT o ambas, y cuántas filas van en cada INSERT.
  4. Copia el SQL y ejecútalo en tu cliente de base de datos.

Cómo funciona

Las columnas son todas las claves de los objetos, en el orden en que aparecen por primera vez. El tipo de cada columna sale de sus valores, y si a un objeto le falta una clave, esa fila recibe NULL. Las filas se escriben con INSERT de varias filas, que admiten las tres bases de datos; los arrays grandes se dividen según el ajuste Filas por INSERT.

Los números se escriben tal cual, los booleanos como TRUE/FALSE (1/0 en SQLite), y en una columna de valores mezclados cada valor va como texto entre comillas, para que el INSERT encaje con su tipo TEXT.

Ejemplo

[{"id":1,"name":"Ann","tags":["a"]},{"id":2,"name":"Bob"}] con la tabla users en PostgreSQL da:

CREATE TABLE "users" (
  "id" BIGINT NOT NULL,
  "name" TEXT NOT NULL,
  "tags" JSONB
);

INSERT INTO "users" ("id", "name", "tags") VALUES
  (1, 'Ann', '["a"]'),
  (2, 'Bob', NULL);

A Bob le falta tags, así que la columna admite NULL y su fila recibe NULL.

Consejos

  • Añade tú la PRIMARY KEY y los índices: el generador no puede saber qué columna es la clave.
  • Las fechas en JSON son cadenas, así que salen como TEXT; cambia el tipo a DATE o TIMESTAMP si los valores son fechas ISO.
  • Los enteros mayores que 9.007.199.254.740.991 pierden precisión al leer JSON en JavaScript; guarda los identificadores grandes como cadenas.
  • Para datos en CSV usa CSV a SQL INSERT.

Preguntas frecuentes

¿Cómo se eligen los tipos de columna?

Según los valores no nulos de cada clave: solo enteros → BIGINT (INTEGER en SQLite); algún decimal → DOUBLE, DOUBLE PRECISION o REAL; true/false → BOOLEAN (INTEGER 1/0 en SQLite); cadenas → TEXT, o VARCHAR(255) en MySQL si ningún valor es más largo; objetos y arrays → JSON, JSONB o TEXT. Una clave con valores de distinto tipo pasa a TEXT.

¿Cuándo una columna es NOT NULL?

Cuando todos los objetos tienen la clave con un valor no nulo. Si la clave falta en algún objeto o vale null en alguno, la columna admite NULL y esas filas reciben NULL.

¿Cómo se escapan las cadenas?

Las cadenas van entre comillas simples y una comilla interior se duplica: D'Costa pasa a 'D''Costa'. En MySQL también se duplican las barras invertidas, porque MySQL las lee como escapes. Los nombres de tabla y columna van entre acentos graves en MySQL y entre comillas dobles en PostgreSQL y SQLite.

¿Qué pasa con objetos y arrays anidados?

Se guardan como texto JSON en una columna: JSON en MySQL, JSONB en PostgreSQL, TEXT en SQLite (cuyas funciones JSON leen texto). El generador no los reparte en tablas aparte.

¿Se suben mis datos?

No. El SQL se genera con JavaScript en tu navegador.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.