Convertidor de CSV a SQL (generador de sentencias INSERT)

Convierte archivos CSV en sentencias SQL INSERT y CREATE TABLE. Compatible con los dialectos MySQL, PostgreSQL y SQLite, con detección automática del tipo de columna (entero, decimal, texto). La conversión se realiza por completo en el navegador; los datos nunca se envían a un servidor.

Delimitador
Usar la primera línea como encabezado
Nombre de la tabla
Dialecto SQL
Generar también la sentencia CREATE TABLE
Tratar los valores vacíos como NULL
Combinar filas en una sola sentencia INSERT


            
            ¡Copiado!
            
          

Introduce datos CSV para ver aquí el SQL generado.

Cómo se corresponde una fila CSV con una sentencia INSERT

Una fila de CSV name,age,city
Sentencia INSERT resultante INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

Cuando se usa la primera línea como encabezado, cada fila siguiente se convierte en una sentencia INSERT que nombra las columnas del encabezado. Las columnas detectadas como entero o decimal se muestran como números sin comillas, y el resto se muestra como cadenas entre comillas simples.

Qué es el convertidor de CSV a SQL (generador de sentencias INSERT)

Cuando tienes que cargar un archivo CSV en una base de datos, escribir una sentencia INSERT fila por fila a mano deja de ser viable en cuanto el archivo supera unas pocas líneas. Esta herramienta lee tu CSV y convierte cada fila de datos en una sentencia INSERT lista para ejecutar. Para determinar el tipo de cada columna, examina todos los valores de esa columna en todas las filas —no solo la primera— y decide si se trata de un entero, un decimal o una cadena de texto; gracias a ese análisis completo, también puede generar automáticamente la sentencia CREATE TABLE correspondiente si lo necesitas.

El convertidor es compatible con los tres dialectos SQL más habituales: MySQL, PostgreSQL y SQLite. Según el que elijas, cambian automáticamente tanto el carácter usado para entrecomillar los identificadores (nombres de tabla y columna) como los nombres de los tipos de datos, así que no hace falta memorizar esas diferencias ni corregirlas a mano después. Cualquier comilla simple que aparezca dentro de un valor de texto se escapa siguiendo la convención estándar de SQL, de modo que el resultado se puede pegar y ejecutar sin más ajustes. Todo el procesamiento ocurre en tu propio navegador mediante JavaScript: el contenido de tu CSV nunca viaja a un servidor, lo que la hace segura incluso para datos reales o sensibles.

Cómo generar sentencias INSERT a partir de un CSV

  1. Pega tu CSV Copia los datos en el cuadro de entrada. Si tu archivo usa tabulaciones en lugar de comas, cambia el delimitador a "Tabulación" antes de continuar.
  2. Indica el nombre de la tabla y el dialecto Escribe el nombre de la tabla de destino y selecciona el motor de base de datos que vas a usar; el carácter de entrecomillado de los identificadores se ajustará automáticamente.
  3. Elige las opciones de salida Decide si también quieres generar la sentencia CREATE TABLE, si los valores vacíos deben tratarse como NULL y si prefieres agrupar varias filas en una sola sentencia INSERT.
  4. Copia el resultado y ejecútalo Copia el SQL generado y pégalo en tu cliente de base de datos. Si el volumen de filas es muy grande, es recomendable dividir la ejecución en varios lotes.

Consejos para aprovecharla mejor

  • El tipo de cada columna (entero, decimal, texto) se detecta automáticamente examinando todas las filas de datos de esa columna. Si aunque sea un valor no es numérico, toda la columna se trata como tipo texto.
  • Al activar "Combinar filas en una sola sentencia INSERT" se genera una única sentencia `INSERT INTO ... VALUES (...), (...), (...);`, lo que reduce el número de ejecuciones necesarias para cargar grandes conjuntos de datos.
  • MySQL entrecomilla los identificadores con acento grave (`), mientras que PostgreSQL y SQLite usan comillas dobles ("). El estilo de comillas cambia automáticamente según el dialecto SQL seleccionado.
  • Al desactivar "Tratar los valores vacíos como NULL", las columnas de texto muestran cadenas vacías ('') y las columnas numéricas muestran NULL en su lugar.

Casos de uso del convertidor de CSV a SQL

Preparar datos de prueba (seed data)

Puedes convertir directamente en sentencias INSERT los datos de verificación que hayas creado en una hoja de cálculo. Es una solución ágil para pruebas a pequeña escala en las que no compensa escribir un seeder completo del framework.

Migrar datos maestros entre sistemas

Un CSV exportado desde un sistema existente se transforma en sentencias listas para cargarlo en una base de datos nueva, y de paso puedes obtener también la sentencia CREATE TABLE para crear la estructura desde cero.

Comprobar el tipo real de cada columna

Revisar los tipos detectados automáticamente ayuda a detectar columnas con valores inesperados: si una columna que debería ser numérica aparece como texto, es una señal clara de que hay datos contaminados o mal formateados.

Comparar la sintaxis entre dialectos

Al procesar el mismo CSV cambiando el dialecto SQL, puedes ver en un ejemplo real las diferencias de entrecomillado de identificadores y de nombres de tipo entre MySQL, PostgreSQL y SQLite.

Términos relacionados con la carga de datos SQL

Sentencia INSERT
Instrucción SQL que añade una o varias filas nuevas a una tabla, indicando qué valor corresponde a cada columna.
Sentencia CREATE TABLE
Instrucción SQL que crea una tabla nueva definiendo el nombre y el tipo de cada columna. Es necesaria cuando la tabla de destino todavía no existe.
Dialecto SQL
Conjunto de diferencias de sintaxis entre distintos motores de base de datos, como el carácter usado para entrecomillar identificadores o los nombres exactos de los tipos de datos.
NULL
Valor especial que representa la ausencia de dato. Se distingue de una cadena de texto vacía, por lo que hay que decidir explícitamente cómo tratar los campos en blanco.
Escape (escapado)
Proceso que evita que un carácter con significado especial en la sintaxis —como la comilla simple dentro de un valor de texto— sea interpretado como parte del código SQL.
Inserción masiva (bulk insert)
Técnica que combina varias filas dentro de una única sentencia INSERT. Reduce el número de veces que la base de datos tiene que analizar la sentencia y confirmar la transacción, por lo que la carga se completa más rápido.

Preguntas frecuentes

Se examina cada valor de esa columna en todas las filas de datos: si todos son enteros, la columna se convierte en INTEGER; si todos son decimales, se convierte en REAL; en caso contrario (texto o valores mixtos) se convierte en TEXT. Este tipo detectado se usa directamente en la sentencia CREATE TABLE generada.

Sí. Al seleccionar PostgreSQL o SQLite en "Dialecto SQL", el entrecomillado de identificadores (comillas dobles) y los nombres de tipo se generan conforme a cada base de datos respectiva.

Siguiendo la convención estándar de escape de SQL, las comillas simples se duplican automáticamente (''), de modo que la sentencia resultante se puede ejecutar tal cual.

No. Toda la conversión se realiza mediante JavaScript en tu navegador, y el contenido CSV que introduces nunca se transmite a ningún servidor. Es seguro usarlo incluso con datos sensibles.
Tool-kun

A propósito — por qué las sentencias INSERT combinadas son más rápidas

La opción de este tool para "combinar filas en una sola sentencia INSERT" (`INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`) puede ejecutarse considerablemente más rápido que emitir una sentencia INSERT por cada fila. Esto se debe a que reduce la sobrecarga de analizar y planificar cada sentencia SQL, así como el coste de las confirmaciones de transacción que de otro modo se repetirían una vez por sentencia.

Dicho esto, MySQL tiene un límite `max_allowed_packet`, y PostgreSQL tiene un límite similar en su búfer de comunicación, por lo que meter demasiadas filas en una sola sentencia INSERT puede superar esos límites y provocar un error. En la práctica, dividir las sentencias cada varios cientos o miles de filas es el enfoque habitual.

Cargar datos CSV en una base de datos de prueba suele llamarse "seeding" en los flujos de desarrollo, y muchos frameworks web —entre ellos los seeders y factories de Laravel— ofrecen mecanismos dedicados exactamente para esta tarea. Un convertidor rápido como este sigue siendo útil para verificaciones a pequeña escala o migraciones de datos que no justifican montar toda esa maquinaria.