JSON a SQL INSERT
Este conversor escribe sentencias SQL INSERT desde un array JSON de registros en tu navegador. Los nombres de columna se ponen entre comillas dobles, las cadenas se escapan duplicando las comillas simples, null se convierte en NULL y los booleanos en TRUE o FALSE. Los registros deben compartir un mismo conjunto de claves; nada sale de la pestaña.
JSON a SQL INSERT: explicación
Los datos iniciales viven en JSON — fixtures de API, informes exportados, registros de prueba — pero la base de datos quiere sentencias INSERT. El cruce es mecánico y merece hacerse con precisión: cada registro se convierte en una fila, cada clave en una columna y cada valor debe llegar como un literal SQL con el tipo correcto. Si fallas en el escape, la sentencia falla inmediatamente; si fallas sutilmente, falla tres semanas después, con el primer nombre que lleve una comilla simple.
Este conversor emite sentencias INSERT multi-fila: una lista de columnas entre comillas dobles, luego una tupla VALUES por registro. Las comillas dobles son el estándar SQL para identificadores, y las cadenas entre comillas simples tienen cualquier comilla incrustada duplicada — la forma O''Brien que cualquier parser conforme lee como una comilla literal simple. Los números quedan tal cual, true y false se convierten en TRUE y FALSE, y null de JSON se convierte en la palabra clave sin comillas NULL. Tú nombras la tabla de destino en el campo de la herramienta; el ejemplo de abajo usa people.
Todo esto ocurre en esta pestaña del navegador. Tus registros se parsean con JSON.parse del propio navegador, el texto SQL se ensambla en memoria y no sale ninguna petición de la página — el panel Network de DevTools no muestra nada durante una conversión, y el Content-Security-Policy del sitio prohíbe conexiones salientes de cualquier forma.
Si tus filas vienen de una exportación de hoja de cálculo en vez de JSON, el Conversor de CSV a SQL aplica las mismas reglas de comillado sobre un parser RFC 4180 con inferencia de tipo por celda.
El conversor solo acepta un array JSON estricto, así que si la carga vino de un script o un archivo de log, revísala con el Validador de JSON primero; el error que veas ahí es el error que esta herramienta lanzaría.
Cómo funciona realmente la conversión
El motor parsea tu JSON con JSON.parse — el parser RFC 8259 del propio navegador — y luego hace tres comprobaciones antes de emitir nada, porque cada modo de fallo produce SQL que es o inválido o incorrecto silenciosamente:
- Forma: el nivel superior debe ser un array cuyo elemento sea un objeto; un objeto simple o un array anidado se rechaza con un mensaje que nombra el índice ofensor.
- Claves consistentes: cada registro debe tener el mismo conjunto de claves. Una sentencia INSERT declara una lista de columnas única, así que un registro que lleva una clave que los demás carecen no tiene dónde ir — el conversor informa de la clave y la fila en lugar de inventar NULLs que no pediste.
- Valores planos: los objetos y arrays anidados dentro de un registro no tienen equivalente literal SQL simple, así que se rechazan con la ruta nombrada, en lugar de convertirse en cadena a tus espaldas.
La mapeación literal
Cada valor se renderiza por su tipo JSON, usando solo formas estándar SQL:
- Una nota de tipografía merece su propia línea: TRUE y FALSE son literales booleanos estándar SQL, leídos de forma nativa por PostgreSQL y SQLite, y como 1 y 0 por MySQL. Motores sin literales booleanos — las columnas BIT de SQL Server, por ejemplo — quieren 1 y 0 en la sentencia, así que para esos destinos reemplaza las palabras clave; las reglas de comillado y NULL se quedan exactamente igual.
| Valor JSON | Literal SQL |
|---|---|
| "Ada Lovelace" | 'Ada Lovelace' |
| "O'Brien" | 'O''Brien' — la comilla se duplica |
| null | NULL, sin comillas |
| true / false | TRUE / FALSE |
| 9.5 | 9.5, un número simple |
| [1, 2] | Rechazado, con la ruta nombrada |
Cómo es la salida
El ejemplo de abajo es el par exacto que produce el botón Cargar muestra del conversor para una tabla llamada people: dos registros, cuatro claves consistentes y uno de cada literal interesante. El nombre del segundo registro contiene una comilla simple, y la salida muestra la defensa estándar — la comilla se duplica, que cada dialecto SQL lee como una comilla literal simple y no como el final de la cadena. Su score es null y llega como la palabra clave NULL, no como una cadena vacía — la diferencia entre una medida faltante y una de longitud cero. Copia el bloque tal cual o descárgalo como archivo .sql; de cualquier forma es un script completo y terminado.
Cómo llevar las sentencias a tu base de datos
La salida es un script completo y terminado: pégalo en una consola SQL, o guárdalo como archivo .sql para un runner de migraciones. Para una carga limpia, envuélvelo en una transacción — BEGIN; antes, COMMIT; después — así que un fallo a mitad de script hace rollback de toda la semilla en lugar de dejar media tabla atrás. Como las sentencias usan solo formas estándar SQL, el mismo archivo se ejecuta sin cambios en PostgreSQL, SQLite y MySQL con ANSI_QUOTES habilitado; solo la nota de booleanos anterior necesita tocarse para un motor específico.
- psql: pega en la shell interactiva, o ejecuta \i seed.sql desde el prompt.
- sqlite3: ejecuta .read seed.sql, o redirige el archivo desde tu shell.
- Herramientas GUI: la mayoría de ventanas de consulta aceptan el script completo como un lote y reportan el conteo de filas.
Preguntas frecuentes
¿El conversor de JSON a SQL sube mis datos?
No. El parseo y la generación de SQL se ejecutan en esta pestaña del navegador con JavaScript cargado una vez al abrir la página. La página no tiene endpoint para enviar datos, y su Content-Security-Policy bloquea peticiones salientes. La afirmación es verificable: abre DevTools, cambia al panel Network, convierte un archivo grande y observa que no aparece ninguna petición.
¿Por qué los nombres de columna van entre comillas dobles?
Los identificadores entre comillas dobles son el estándar SQL, y es lo que protege los nombres de columna que colisionan con palabras clave o mezclan mayúsculas y minúsculas — una columna llamada order o UserName necesita comillas para sobrevivir. PostgreSQL, SQLite y SQL Server las aceptan directamente; MySQL también cuando el modo ANSI_QUOTES está activo, de lo contrario usa su equivalente de backticks.
¿Cómo se escapan las comillas simples dentro de cadenas?
Duplicándolas, que es el estándar: el nombre O'Brien se emite como 'O''Brien', y cualquier parser conforme lee el par como una comilla literal simple. El escape con backslash — como en O\'Brien — es una extensión de MySQL y produce un error de sintaxis o un backslash suelto en cualquier otro lugar, por lo que este conversor no lo emite.
¿Qué se convierte null de JSON en el SQL?
La palabra clave sin comillas NULL — el propio marcador de SQL para un valor ausente, distinto de la cadena vacía ''. Un null en score significa que no se tomó una medida; una cadena vacía significa una medida de longitud cero. El conversor preserva esa distinción, porque colapsar las dos es uno de los errores más difíciles de deshacer en una tabla poblada.
¿Por qué cada registro debe tener las mismas claves?
Porque una sentencia INSERT declara su lista de columnas una sola vez, y cada tupla VALUES debe llenar exactamente esas columnas. Un registro que falta una clave, o que lleva una extra, no tiene lugar definido en esa lista. El conversor informa de la clave y el índice de la fila ofensores para que puedas normalizar los registros primero — rellenando deliberadamente huecos con null si ese es tu propósito.
¿Por qué un INSERT multi-fila en lugar de una sentencia por fila?
Menos sentencias, un parseo y típicamente una carga mucho más rápida — un único INSERT multi-fila es la forma que la mayoría de guías de carga masiva recomiendan para sembrar. La salida termina con punto y coma para que sea un script completo, y si tus herramientas prefieren una sentencia por fila, cada tupla VALUES está en su propia línea, así que dividir es un pequeño cambio mecánico.
¿Qué herramientas relacionadas debería usar después?
- CSV a SQL INSERTConvertidor que funciona en tu navegadorAbrir
- Convertir JSON a CSVConvierte registros a una hoja de cálculo, anidados incluidosAbrir
- Convertir CSV a JSONConvierte una exportación de hoja de cálculo en registrosAbrir
- Formatear JSONIndenta, ordena claves y quita comentariosAbrir
- Validar JSONValida la sintaxis con línea y columna exactas y repara los erroresAbrir
- Qué es JSONGuía en lenguaje sencilloAbrir