Inicio › Herramientas para desarrolladores › Convertidor de CSV a SQL

Convertidor de CSV a SQL

Pega o sube un archivo CSV y obtén una sentencia CREATE TABLE con tipos de columna adecuados y sentencias INSERT, listas para MySQL, PostgreSQL, SQLite o SQL Server. Revisa o cambia el tipo de cada columna antes de copiar el SQL.

Última actualización:

Columnas

Cambia el nombre de una columna o modifica su tipo detectado. Los cambios se aplican al instante.

#Nombre de columnaTipoDetectadoVacíosEjemplo
Publicidad
Publicidad

Cómo usar Convertidor de CSV a SQL

  1. Pega tu CSV o sube un archivo .csv. El delimitador se detecta automáticamente.
  2. Elige el dialecto SQL y escribe un nombre de tabla.
  3. Revisa las columnas: cámbiales el nombre o modifica un tipo detectado en la lista de columnas.
  4. Elige las opciones: filas por INSERT, CREATE/DROP TABLE, transacción, tratamiento de NULL y clave primaria.
  5. Copia o descarga el archivo .sql y ejecútalo en tu cliente de base de datos.

Correspondencia de tipos por dialecto

Datos detectadosMySQLPostgreSQLSQLiteSQL Server
Números enterosINTINTEGERINTEGERINT
Números enteros mayores que 2,147,483,647BIGINTBIGINTINTEGERBIGINT
Decimales (p. ej. 1250.50)DECIMAL(p,s)NUMERIC(p,s)REALDECIMAL(p,s)
Notación científica (1.5e3)DOUBLEDOUBLE PRECISIONREALFLOAT
true / falseBOOLEANBOOLEANINTEGER (1/0)BIT (1/0)
2024-01-15DATEDATETEXTDATE
2024-01-15 09:30:00DATETIMETIMESTAMPTEXTDATETIME2
2024-01-15T09:30:00ZVARCHAR(35)TIMESTAMPTZTEXTDATETIMEOFFSET
Texto de hasta 255 caracteresVARCHAR(n)VARCHAR(n)TEXTNVARCHAR(n)
Texto más largoTEXTTEXTTEXTNVARCHAR(MAX)

En DECIMAL(p,s), p (precisión) es el número total de dígitos y s (escala) los dígitos tras el punto decimal, ambos tomados del valor más ancho de la columna. Las longitudes VARCHAR se redondean a 10, 20, 50, 100, 150 o 255 para dejar algo de margen a valores más largos en el futuro. SQLite usa tipado dinámico con afinidad de tipo, así que solo necesita INTEGER, REAL y TEXT.

Ejemplo de resultado (PostgreSQL)

CREATE TABLE "customers" (
  "id" INTEGER,
  "name" VARCHAR(20),
  "balance" NUMERIC(7,2)
);

INSERT INTO "customers" ("id", "name", "balance") VALUES
  (1, 'Ann', 1250.50),
  (2, 'O''Brien', NULL);

Importar archivos CSV grandes

Las sentencias INSERT son portables y fáciles de revisar, lo que las hace ideales para datos iniciales, migraciones y para compartir. Para archivos con millones de filas, el cargador masivo nativo de la base de datos es mucho más rápido: LOAD DATA INFILE en MySQL, COPY … FROM o \copy en PostgreSQL, .import --csv en el shell de SQLite y BULK INSERT en SQL Server. Aun así, puedes usar esta herramienta para generar primero la sentencia CREATE TABLE.

  • Envolver todos los INSERT en una transacción hace que la importación sea de todo o nada y suele ser mucho más rápida, sobre todo en SQLite.
  • Los identificadores siempre se entrecomillan, así que los nombres de columna que son palabras reservadas (order, group, user) o que contienen espacios siguen funcionando.

Preguntas frecuentes

¿Cómo se eligen los tipos de columna?

Se revisa cada valor no vacío de una columna. Si todos son números enteros, la columna es INT (o BIGINT cuando un valor supera 2,147,483,647). Los decimales pasan a DECIMAL(p,s) con el tamaño necesario para el valor más grande, los valores true/false pasan a BOOLEAN, los valores AAAA-MM-DD pasan a DATE, las fechas con hora pasan a DATETIME/TIMESTAMP y todo lo demás es VARCHAR con el tamaño del valor más largo, o TEXT cuando supera los 255 caracteres.

¿Por qué mi columna de código postal es VARCHAR y no un número?

Los valores con ceros a la izquierda, como 02134 o 007, perderían los ceros si se guardaran como números, así que el convertidor mantiene esas columnas como texto. Aun así, puedes cambiar el tipo en la lista de columnas.

¿Cuántas filas debe tener cada INSERT?

Los INSERT de varias filas son mucho más rápidos que una sentencia por fila. De 100 a 500 filas por sentencia es un buen valor predeterminado. SQL Server permite como máximo 1000 filas en una sola lista VALUES, así que en ese dialecto los lotes mayores se limitan a 1000.

¿Cómo se escapan las comillas y los caracteres especiales?

Los valores de texto se encierran entre comillas simples y cualquier comilla simple interna se duplica ('O''Brien'), que es SQL estándar. En MySQL también se escapan las barras invertidas, porque MySQL las trata como caracteres de escape de forma predeterminada. Las cadenas de SQL Server usan el prefijo N'...' para conservar el texto Unicode.

¿Cómo se tratan las celdas vacías?

Con el ajuste predeterminado, las celdas vacías, el texto NULL y \N (el marcador de exportación de MySQL) se convierten en NULL de SQL. Desactiva la opción para insertar cadenas vacías en las columnas de texto.

¿Hay un límite de tamaño?

No hay un límite fijo y no se sube nada: el CSV se procesa en tu navegador. Funcionan archivos con cientos de miles de filas, pero los resultados muy grandes es mejor dividirlos con el CSV Splitter o importarlos con el cargador masivo de tu base de datos (LOAD DATA, COPY, .import o BULK INSERT).

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Conversores de datos y formatos de archivo →