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