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 |
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
- 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.
- 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.
- 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.
- 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
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.