CSV a SQL INSERT
Convierta una tabla CSV en sentencias INSERT listas para ejecutar; comillas simples escapadas y celdas vacías como NULL
Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.
¿Le sirvió esta herramienta?
Gracias, su comentario llegó.
Cómo funciona
Pegue la tabla CSV en el panel izquierdo; las sentencias INSERT se forman a la derecha mientras escribe. La primera fila se lee como encabezado y sus celdas pasan a la lista de columnas: un listado de clientes de 120 filas se convierte en 120 INSERT en cuanto lo pega. Los nombres de columna se adaptan al SQL — «número de teléfono» queda como numero_de_telefono, porque una tilde, una eñe o un espacio dentro de un identificador sin comillas rompe la sentencia; las letras acentuadas pasan a su equivalente ASCII, lo que no encaja se vuelve guion bajo, a un nombre que empieza por cifra se le antepone un guion bajo, y la línea de resultado cuenta cuántos nombres cambiaron. Para los valores la regla es fija: el texto va entre comillas simples, una comilla simple dentro del texto se duplica ('L''Hospitalet'), la celda vacía pasa a NULL y los números quedan sin comillas. Los campos CSV entrecomillados se leen bien: una celda con coma o salto de línea sigue siendo una sola celda mientras esté envuelta en comillas dobles. Con el separador en automático no se mira solo la primera fila, sino varias: gana el candidato que produce el mismo número de columnas en todas. Se reconocen los tres finales de línea — el CR+LF de Windows, el LF de macOS y Linux y el CR solo de programas muy antiguos, que muchas herramientas leen como una única línea larga. Si una fila trae más celdas que el encabezado, la conversión se detiene e indica la fila de datos y el número de celdas — casi siempre es un separador sin entrecomillar. Copie la salida o descargue el archivo .sql y ejecútelo en su cliente de base de datos.
Esta herramienta también se busca como csv a sql, convertir csv a sql, generar insert sql desde csv, csv to sql insert, pasar excel a sql.
¿Qué es Sentencia INSERT?
INSERT es la orden de SQL que añade una fila nueva a una tabla y consta de tres partes: a qué tabla se escribe, qué columnas se llenan y los valores. INSERT INTO cliente (nombre, ciudad) VALUES ('Ana', 'Sevilla') muestra las tres. La lista de columnas es opcional en la norma, pero escribirla debería ser costumbre: sin ella, los valores se colocan según el orden de columnas de la tabla, y el día que alguien añade una columna, las sentencias viejas empiezan a escribir en el campo equivocado sin avisar. Esta herramienta escribe siempre la lista de columnas.
¿Qué es NULL?
NULL es la marca de «sin valor» en SQL y no es ni un cero ni una cadena vacía. La diferencia se nota en las comparaciones: nada es igual a NULL, ni siquiera NULL, y por eso los registros vacíos se buscan con IS NULL y no con el signo igual; además, la mayoría de las funciones de agregado salta las filas NULL en vez de contarlas como cero. En una exportación CSV, la celda vacía suele significar «dato no capturado», y por eso esta herramienta escribe NULL en lugar de una cadena vacía entre comillas.
¿Qué es Escape de la comilla simple?
Escapar significa neutralizar, dentro de un valor, el carácter que el lenguaje usa como delimitador. En SQL ese carácter es la comilla simple: abre y cierra los valores de texto, de modo que cada comilla interna debe escribirse dos veces. Es el mecanismo previsto por la norma y se comporta idéntico en MySQL, PostgreSQL, SQLite y SQL Server; el escape con barra invertida, en cambio, es un añadido propio de MySQL y no viaja a otros motores. Cuando falta la duplicación, el síntoma es siempre el mismo: cada registro que trae un apóstrofo falla o llega cortado a la tabla.
¿Qué diferencia hay entre un INSERT por fila y un INSERT agrupado?
Los dos escriben las mismas filas en la misma tabla; la diferencia está en la velocidad y en qué pasa cuando algo falla. Con una sentencia por fila, la base analiza cada sentencia por separado, lo que en decenas de miles de filas es claramente más lento — pero la fila con un tipo incompatible o una clave repetida falla sola, las demás se escriben y el error señala exactamente cuál fue. Con un solo INSERT que lleva muchos VALUES, el análisis se hace una vez y hay un único viaje al servidor: la carga masiva resulta varias veces más rápida. El precio es que la sentencia es una unidad, y una sola fila defectuosa puede hacer que se rechace el bloque entero. Regla práctica: los datos sin verificar se cargan fila por fila; los ya validados, en una sola sentencia.
¿Por qué se duplica la comilla simple?
En SQL, un valor de texto se escribe entre comillas simples. Cuando el propio valor trae una — L'Hospitalet, O'Brien, el apellido D'Alessandro —, la base de datos lee esa comilla como el final del texto e intenta interpretar el resto como órdenes. El resultado es un error de sintaxis o, peor, un registro guardado a medias.
La solución de la norma es duplicar: cada comilla simple interna se escribe dos veces y la base la vuelve a leer como un solo carácter. Esta herramienta aplica la duplicación a todos los valores. Duplicar no es lo mismo que escapar con barra invertida, y la preferencia tiene un motivo concreto: la barra invertida es un comportamiento por defecto de MySQL, no una norma; la duplicación funciona igual en todos los motores.
Lo que cambia según la base: MySQL, PostgreSQL, SQLite
El SQL generado es deliberadamente sencillo para que corra en los tres sistemas. Estas son las diferencias que conviene conocer antes de ejecutar la salida:
- Fechas y horas: los valores se escriben como texto. PostgreSQL no acepta sin más la escritura 24/08/2026; según el tipo de columna hará falta una conversión (TO_DATE) — la escritura ISO 2026-08-24 la leen los tres
- Barra invertida: MySQL la trata por defecto como carácter de escape; PostgreSQL y SQLite no. Si sus datos traen rutas de archivo, pruebe la salida primero en MySQL
- Comillas de identificadores: MySQL usa el acento grave, PostgreSQL y SQLite la comilla doble. Como los nombres se reducen aquí a letras ASCII, cifras y guiones bajos, la salida no necesita comillas y corre en los tres
- Booleanos: true y false van entre comillas como texto. SQLite no tiene tipo booleano y MySQL espera 1/0; convierta esas columnas después de cargar si hace falta
- Separador decimal: 1250.50 sale como número sin comillas; 1.234 y 1.250,50 quedan como texto entre comillas, porque exactamente tres cifras tras el signo pueden ser un grupo de miles igual que una parte decimal — adivinar movería el importe mil veces. El decimal con coma (1,25) se convierte a la escritura con punto, la única que el SQL reconoce
¿Qué ajuste para qué trabajo?
Los cinco ajustes se eligen según dónde va a ejecutarse la salida; los valores por defecto cubren el caso más común.
- Unos cientos de filas a una base de prueba → un INSERT por fila (si una falla, las demás entran)
- Decenas de miles de filas a producción → un solo INSERT con muchos VALUES, bastante más rápido
- Todas las columnas son VARCHAR o TEXT → todo entre comillas
- Teléfonos, códigos postales, números de expediente → la herramienta ya los entrecomilla (el cero inicial o más de 15 cifras se quedan como texto); si toda la columna es VARCHAR, «todo entre comillas» sigue siendo la opción más clara
- Datos copiados desde Excel → ponga el separador en punto y coma o tabulador; corrija a mano si la detección automática se equivoca
- Exportación sin encabezado → elija «sin nombres de columna»; las columnas se llaman c1, c2 y se renombran en la salida
Esta herramienta no genera CREATE TABLE
La salida contiene solo sentencias INSERT; se da por hecho que la tabla ya existe en la base. Es una decisión de honestidad: adivinar los tipos de columna a partir de un CSV es arriesgado. Una columna de puras cifras parece numérica pero puede ser un código postal, un campo de 12 dígitos puede desbordar un entero, y a dos filas con fecha puede seguirle una tercera con texto libre.
Un tipo mal adivinado produce una tabla que parece correcta y pierde datos en silencio — los ceros iniciales borrados son el ejemplo clásico. Si crea la tabla usted, decide cada tipo a conciencia; esta herramienta lleva después las filas con el escape hecho como corresponde.
Preguntas frecuentes
¿Cómo genero sentencias INSERT de SQL desde un archivo CSV?
Pegue la tabla CSV en el panel izquierdo y escriba el nombre de la tabla de destino; las sentencias aparecen al instante a la derecha. Cópielas o descargue un archivo .sql y ejecútelo en su cliente de base de datos. La tabla debe existir de antemano.
¿Los valores con apóstrofo dan problemas?
No. La comilla simple de un valor como L'Hospitalet u O'Brien se duplica como exige la norma SQL, y la base la vuelve a leer como un solo carácter. Sin la duplicación, la sentencia se cortaría justo ahí y terminaría en error o en un dato truncado.
¿Una celda vacía se convierte en NULL o en cadena vacía?
En NULL, porque en una exportación CSV la celda vacía casi siempre significa «no se aportó valor». Si de verdad necesita cadenas vacías, cargue primero las filas y ejecute después una actualización puntual sobre esa columna.
¿Las columnas de fecha se transfieren bien?
Las fechas van entre comillas tal cual, como texto. Si la columna de destino es de tipo fecha, el formato tiene que aceptarlo la base: la escritura ISO (2026-08-24) la leen los tres motores; la escritura 24/08/2026 suele requerir conversión.
¿La tabla que pego se envía a algún servidor?
No. La lectura del CSV y la generación del SQL corren por completo dentro de su navegador; ya sea una lista de clientes, un listado de precios o una tabla de personal, nada sale de esta página ni se guarda en ninguna parte.