Convertir CSV a SQL

Convierte un archivo CSV o Excel en sentencias CREATE TABLE e INSERT para MySQL, PostgreSQL o SQLite, enteramente en tu navegador. Nada se sube nunca.

🌐 English

Drop your file here (.csv, .xlsx, .xls)

🔒 Privado por diseño: tus archivos se procesan localmente en tu navegador; nada se sube nunca a ningún servidor.

Cómo convertir CSV a SQL

  1. Arrastra tu archivo .csv, .xlsx o .xls a la caja de arriba, o haz clic en Elegir un archivo para seleccionarlo desde tu dispositivo.
  2. Elige Salida, sentencias CREATE TABLE + INSERT para una tabla nueva, o solo sentencias INSERT si la tabla ya existe en tu base de datos.
  3. Elige el Dialecto SQL (MySQL, PostgreSQL o SQLite) para que los identificadores y los tipos de columna se escriban correctamente para tu base de datos.
  4. Ajusta Filas por sentencia INSERT si trabajas con un archivo muy grande, y luego haz clic en Convertir a SQL y descarga el archivo .sql resultante.

Por qué convertir un CSV o una hoja de cálculo a SQL

Llevar datos tabulares a una base de datos es una de las tareas más comunes en el trabajo de importación de datos, y surge constantemente fuera de un pipeline formal de ETL: un cliente te entrega una hoja de cálculo de productos para poblar una tabla nueva, un compañero exporta un CSV de respuestas de encuesta que necesita llegar a Postgres para su análisis, o estás migrando un pequeño conjunto de datos entre entornos y solo necesitas sentencias INSERT que funcionen, rápido. Escribir ese SQL a mano (sobre todo escapar correctamente las cadenas de texto) es tedioso y realmente fácil de hacer mal sin darte cuenta.

Esta herramienta hace la conversión directamente: lee la fila de cabecera de tu archivo como nombres de columna, infiere un tipo de columna razonable para una sentencia CREATE TABLE cuando la quieres, y escribe cada fila como un INSERT correctamente escapado. Los números se quedan como números sin comillas, el texto se queda como texto correctamente entre comillas, y las celdas vacías se convierten en verdaderos NULL de SQL en lugar de la cadena literal “null” o una cadena vacía haciéndose pasar silenciosamente por uno, un error sorprendentemente común en conversores ingenuos de CSV a SQL.

Tus datos nunca salen de tu dispositivo

Las hojas de cálculo y las exportaciones CSV son exactamente el tipo de archivo con el que es razonable tener cautela al entregarlo a una herramienta web cualquiera, listas de clientes, precios, IDs internos, a veces datos mucho más sensibles escondidos en lo que parecía una exportación rutinaria. Esta herramienta analiza tu archivo y construye el SQL enteramente dentro de tu pestaña del navegador; no hay paso de subida, no hay procesamiento en servidor, y no hay copia de tus datos en ningún sitio que no sea tu propio dispositivo y el archivo .sql que produce.

Usos habituales

Cómo funciona, en imágenes

Captura de pantalla de la herramienta Convertir CSV a SQL con sysfenix-sample.csv (140 B) cargado, Output en CREATE TABLE + INSERT statements, SQL dialect en MySQL
Convertir CSV a SQL en pleno proceso: sysfenix-sample.csv (140 B) cargado, Output en CREATE TABLE + INSERT statements, SQL dialect en MySQL.
Captura de pantalla del resultado de Convertir CSV a SQL mostrando sysfenix-sample.sql listo para descargar (380 B, 171% más grande)
El resultado final: sysfenix-sample.sql listo para descargar (380 B, 171% más grande). El enlace de descarga es una URL blob local: el archivo nunca sale de tu dispositivo.

Preguntas frecuentes

¿El SQL generado usa palabras clave en inglés (CREATE TABLE, INSERT INTO...) aunque la página esté en español?

Sí, y esto es intencionado, no una traducción a medias, SQL es un lenguaje cuyas palabras clave son siempre en inglés en cualquier motor de base de datos, sin importar el idioma de quien lo escriba, igual que ocurre con cualquier otro lenguaje de programación o marcado en este sitio. Lo único que puede quedar en inglés dentro del propio archivo .sql descargado es un comentario informativo poco frecuente ("-- ... has no data rows to insert.") cuando eliges "Solo sentencias INSERT" para una hoja sin filas de datos, y el mensaje de error que se muestra si subes un archivo sin ninguna fila, el resto del contenido (nombres de columnas, valores de tus propios datos) se toma tal cual de tu archivo.

¿Se sube mi CSV o mi hoja de cálculo a un servidor para convertirse?

No. El archivo se lee y se analiza enteramente dentro de tu pestaña del navegador usando las bibliotecas de código abierto PapaParse y SheetJS, y el archivo .sql resultante se genera en memoria y se ofrece directamente a tu carpeta de descargas. Las exportaciones CSV y Excel suelen contener datos reales de clientes, precios o registros internos, así que nada de este archivo (ni su contenido ni siquiera el hecho de que lo convertiste) llega jamás a un servidor.

¿Cómo decide la herramienta si un valor debe ir entre comillas como texto o quedar como número?

Cada celda se evalúa por sí sola, no por columna. Un valor se escribe como número sin comillas solo si TODA la celda es un entero o decimal limpio sin cero inicial (como 42 o 3.14), un valor como "00501" (un código postal) se mantiene deliberadamente como texto entre comillas, porque escribirlo como el número puro 501 perdería silenciosamente los ceros iniciales. Cualquier cosa que no sea un número limpio (incluidas las celdas vacías, que se convierten en la palabra clave SQL NULL sin comillas) se escribe como una cadena entre comillas simples correctamente escapada, así que un valor no numérico suelto en una columna por lo demás numérica nunca puede generar SQL roto.

¿Es seguro copiar y pegar el SQL generado y ejecutarlo?

Sí, el escapado sigue la regla estándar de SQL para literales de cadena en cada dialecto: una comilla simple dentro de un valor se duplica (O'Brien se convierte en O''Brien), así que un nombre o una nota que contenga un apóstrofo nunca puede escapar de su cadena y corromper la sentencia. Para MySQL en concreto, una barra invertida literal en tus datos también se duplica, porque la configuración por defecto de MySQL trata una barra invertida suelta dentro de una cadena como el inicio de una secuencia de escape (así que \n podría leerse silenciosamente como un salto de línea en vez de dos caracteres literales), PostgreSQL y SQLite tratan las barras invertidas como caracteres perfectamente normales por defecto, así que ahí no se aplica ningún escapado extra. Los nombres de tabla y columna también van siempre entre comillas (comillas invertidas para MySQL, comillas dobles para PostgreSQL y SQLite), así que una cabecera como "Nombre Completo" o una tabla con el mismo nombre que una palabra reservada de SQL funcionan igualmente bien.

¿Qué tan fiable es la detección de tipos de columna para CREATE TABLE?

Es una heurística basada en los datos de ejemplo de tu archivo, no una garantía, inferir el tipo real a partir de valores de muestra nunca puede ser perfecto. Una columna se tipa como INTEGER solo si todos sus valores no vacíos son enteros puros, como DECIMAL/NUMERIC/REAL solo si todos son enteros o decimales, y en cualquier otro caso se tipa como texto (VARCHAR o TEXT, según el dialecto). Si tus datos tienen una columna mayormente numérica pero con algún valor de texto, un código como "00501", o un formato numérico que esta herramienta no reconoce (notación científica, separadores de miles), se tipa como texto, revisa siempre el CREATE TABLE generado antes de ejecutarlo contra una base de datos real.

¿Qué controla exactamente "Filas por sentencia INSERT"?

Las tablas grandes se dividen en varias sentencias INSERT en lugar de una sola sentencia gigante que cubra todas las filas, ya que muchas bases de datos y proveedores de hosting imponen un tamaño máximo de paquete o de sentencia que un único INSERT de varios miles de filas puede superar. Baja este valor si tu base de datos rechaza una sentencia grande; rara vez hay motivo para subirlo mucho más allá de unos cientos de filas, ya que dividir no afecta a los datos finales, todas las filas acaban en la tabla de todos modos.

¿De dónde sale el nombre de la tabla, si no hay ningún campo para escribirlo?

El nombre de la tabla se deriva automáticamente del nombre de tu archivo subido (limpiado y en minúsculas, los espacios y la puntuación se convierten en guiones bajos). Para un libro de Excel con más de una hoja, cada hoja se convierte en su propia tabla con el nombre de esa hoja, para que no se pierda ningún dato solo por no estar en la primera pestaña. Si necesitas otro nombre, lo más sencillo es un buscar-y-reemplazar rápido en el archivo .sql descargado, o renombrar el archivo antes de subirlo.

¿Qué pasa con un libro de Excel con varias hojas?

Cada hoja con datos se convierte en su propio CREATE TABLE y su propio conjunto de sentencias INSERT dentro del mismo archivo .sql descargado, así que no se pierde nada de un libro con varias pestañas solo por no ser la primera. Una hoja completamente vacía se omite.

¿Hay un límite de tamaño de archivo?

No hay ningún límite artificial, el análisis y la generación de SQL ocurren en la memoria propia de tu navegador, así que el límite práctico es la memoria disponible de tu dispositivo en lugar de cualquier restricción impuesta por esta herramienta, y funciona igual sin conexión a internet una vez que la página ha cargado.

Herramientas relacionadas