CodeKitHub
Herramientas JSON

Conversor de CSV a SQL

Última actualización:

Para convertir una fila CSV en SQL, cada columna se convierte en un valor dentro de una sentencia INSERT INTO — los números quedan sin comillas, el texto se envuelve en comillas simples con las comillas internas duplicadas (O'Brien se convierte en O''Brien), y las celdas vacías se convierten en NULL. Esta herramienta aplica esa conversión a todo tu archivo CSV, enteramente en tu navegador, con el nombre de tabla que elijas y un escape de cadenas correcto, de modo que las hojas de cálculo exportadas o los volcados de bases de datos nunca salen de tu dispositivo.

¿Qué es esta herramienta?

Poblar una base de datos de pruebas, cargar la exportación de una hoja de cálculo en una tabla, o migrar un pequeño conjunto de datos suele empezar igual: tienes un archivo CSV y necesitas SQL. Esta herramienta analiza tu CSV (usando la fila de encabezado como nombres de columna) y construye una única sentencia INSERT INTO que cubre todas las filas de datos, lista para pegar en un cliente de base de datos.

Los valores de texto se envuelven en comillas simples, y las comillas internas se escapan duplicándolas (así O'Brien se convierte en O''Brien), la regla de escape estándar que comparten MySQL, PostgreSQL y SQLite. Una celda CSV vacía se escribe como la palabra clave SQL NULL en lugar de una cadena vacía — es una decisión deliberada, ya que una celda en blanco en una hoja de cálculo suele significar «sin valor» y no «un texto vacío», y NULL es lo que la mayoría de esquemas espera para eso.

Si un valor se coloca entre comillas o no, se decide con una heurística sencilla, no con inferencia de tipos real: si la celda, sin espacios en los extremos, parece un número entero o decimal (opcionalmente con un signo menos al inicio), se escribe sin comillas; todo lo demás — incluidos valores que solo se parecen a números pero tienen caracteres adicionales, como códigos postales con ceros a la izquierda — se entrecomilla como texto. Esto mantiene el resultado honesto: es un buen punto de partida para una importación pequeña, no un sustituto de validar tus datos contra el esquema real de tu tabla antes de ejecutarlo.

Fuente: El análisis de CSV sigue el RFC 4180, lo más parecido a un estándar formal de CSV; la duplicación de comillas simples para el escape de cadenas es la convención compartida documentada por MySQL, PostgreSQL y SQLite.

¿Por qué utilizarlo?

  • Nombre de tabla personalizable — defínelo una vez y todas las filas apuntan a esa tabla.
  • Escape de cadenas correcto — las comillas simples dentro de los valores se duplican para que el SQL no se rompa ni se trunque.
  • Manejo predecible de NULL — las celdas vacías se convierten en NULL en lugar de cadena vacía, igual que la mayoría de bases de datos distinguen los datos ausentes.
  • Sintaxis SQL común — el INSERT INTO ... VALUES ... generado aquí funciona sin modificaciones en MySQL, PostgreSQL y SQLite.
  • 100% en el cliente — tus datos CSV (que pueden incluir registros de clientes o datos de negocio) se analizan y convierten en tu navegador y nunca se suben a ningún sitio.

Cómo utilizarlo

  1. Pega datos CSV con una fila de encabezado, p. ej. name,age\nAlice,30\nBob,25.
  2. Introduce el nombre de la tabla destino (por defecto my_table).
  3. Haz clic en «Generar SQL».
  4. Copia la sentencia INSERT INTO o descárgala como archivo .sql, y ejecútala contra tu base de datos.

Ejemplo

Entrada

name,age,city
Alice,30,
Bob,,NYC

Resultado

INSERT INTO `my_table` (`name`, `age`, `city`)
VALUES
  ('Alice', 30, NULL),
  ('Bob', NULL, 'NYC');

Observa cómo las celdas vacías se convirtieron en NULL (no en cadenas vacías), y el valor numérico de age (30) quedó sin comillas mientras que cada valor de texto fue entrecomillado.

Consejos prácticos

  • Poblar una base de datos de pruebas local: exporta una muestra pequeña como CSV desde una hoja de cálculo, conviértela aquí, y ejecuta la sentencia INSERT contra tu base de datos de desarrollo.
  • Revisa siempre los tipos de columna antes de ejecutar el SQL generado contra una tabla real — esta herramienta infiere numérico frente a texto con una heurística sencilla, no según tu esquema real, así que una columna entera que espera un formato específico puede necesitar un ajuste manual.
  • Si tienes miles de filas, la única sentencia INSERT multifila que genera esta herramienta sigue siendo SQL válido, pero las sentencias muy grandes pueden superar el tamaño máximo de paquete de una base de datos — divide el CSV en lotes más pequeños si te encuentras con ese límite.

Por qué NULL y no una cadena vacía

Un error común al escribir a mano scripts de CSV a SQL es tratar cada celda ausente como una cadena vacía ''. Eso es técnicamente SQL válido, pero suele no significar lo que quieres: una columna definida como entero rechazará '' directamente, e incluso en una columna de texto, '' significa silenciosamente algo distinto de «no conocemos este valor» en la mayoría de diseños de esquema y consultas de informes (una comprobación WHERE columna IS NULL no coincidirá con cadenas vacías, y viceversa). Usar NULL para las celdas en blanco coincide con la semántica que esperan la mayoría de bases de datos y ORMs, y evita errores de tipo cuando una columna numérica tiene valores ausentes en algunas filas.

Preguntas frecuentes

¿Funciona con cualquier base de datos SQL?

La sintaxis generada — identificadores entre comillas invertidas, valores de texto entre comillas simples, un INSERT INTO ... VALUES ... estándar — es común en MySQL, PostgreSQL y SQLite. PostgreSQL no exige estrictamente comillas invertidas en los identificadores (usa comillas dobles si hace falta entrecomillar), pero los nombres entre comillas invertidas tampoco causan problemas allí, salvo que tengas nombres de columna inusuales que choquen con palabras reservadas. No se sigue ningún estándar SQL oficial único — solo la sintaxis que funciona sin cambios en las bases de datos más comunes.

¿Por qué una celda vacía se convierte en NULL y no en una cadena vacía ''?

Es una decisión de diseño deliberada: en la mayoría de exportaciones CSV reales, una celda en blanco significa que el valor es desconocido o no aplica, no literalmente un texto vacío. NULL es lo que la mayoría de esquemas de bases de datos espera para eso. Si tu caso realmente necesita cadenas vacías, tendrás que editar el SQL generado a mano en esos casos.

¿Cómo decide la herramienta si un valor necesita comillas?

Es una heurística sencilla, no inferencia de tipos real: si una celda, sin espacios en los extremos, consiste solo en dígitos (con un signo menos opcional al inicio y como mucho un punto decimal), se escribe sin comillas como número. Todo lo demás se entrecomilla como texto. Esto significa que un código postal como 00501 o un número de teléfono se tratarían como texto solo si tienen caracteres adicionales — un cero inicial por sí solo aún se interpreta como numérico aquí, así que revisa identificadores como códigos postales e IDs antes de ejecutar el SQL.

¿Se suben mis datos a algún sitio?

No. Tanto el análisis como la generación de SQL ocurren en JavaScript en tu navegador — no se envía nada a un servidor, lo que hace seguro usarlo con registros de clientes o de negocio exportados.

¿Puede manejar valores CSV que contienen comas o comillas?

Sí. El CSV se analiza con un analizador de campos entrecomillados adecuado, que entiende comas, saltos de línea y comillas duplicadas dentro de campos entre comillas — no una simple división por comas — así que un campo como "Smith, John" se lee como un solo valor, no se divide en dos columnas.

Herramientas relacionadas