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.

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

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.
ツールくん

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.