Convertir Excel a SQL
Sube tu planilla y descarga un script .sql listo para ejecutar, con la tabla creada y los datos insertados por lotes.
Qué genera exactamente
El resultado es un archivo de texto que puedes pegar en tu cliente SQL y ejecutar tal cual. Contiene, en este orden:
- Un
CREATE TABLEcon una columna por cada título de la primera fila y un tipo deducido de los datos, si dejas activada la opción correspondiente. - Uno o varios
INSERT INTO ... VALUEScon todas las filas, agrupadas en lotes.
La primera fila del archivo se usa siempre como nombres de columna: es obligatoria, porque una tabla sin nombres de columna no se puede crear.
Comillas, apóstrofos e inyección SQL
Los valores se escriben como literales dentro del script, no como parámetros, porque el archivo tiene que poder ejecutarse solo. Eso hace que el escapado sea lo más delicado de la conversión:
- Las cadenas van entre comillas simples y cada comilla simple del texto se
duplica. Un apellido como
O'Briense emite como'O''Brien', que es la forma estándar y la única que impide que el texto se salga del literal. - Los números van sin comillas, con punto decimal y sin separador de miles.
- Los booleanos se emiten como
1y0. - Las fechas van entre comillas en formato
'AAAA-MM-DD'. - Las celdas vacías se emiten como
NULL, sin comillas —no como cadena vacía—.
Ese duplicado de comillas es justo lo que evita que una celda con contenido
malicioso, del tipo '); DROP TABLE ..., se convierta en instrucciones al
ejecutar el script: dentro del literal deja de ser código y pasa a ser texto.
Los nombres de tabla y de columna se sanean aparte: solo se conservan letras,
dígitos y guion bajo, y cualquier otro carácter se sustituye por _. Si un
nombre empieza por dígito se le antepone una c, porque ningún motor admite
identificadores que empiecen por número.
Dialecto y tipos deducidos
El dialecto cambia cómo se delimitan los identificadores:
- Estándar: sin delimitar.
- MySQL: entre acentos graves,
`ventas`. - SQL Server: entre corchetes,
[ventas], y texto comoNVARCHAR. - PostgreSQL: entre comillas dobles y en minúsculas,
"ventas".
El tipo de cada columna se deduce mirando toda la columna, no la primera
fila. Si todos los valores son números enteros sale BIGINT; si hay decimales,
DECIMAL(18,6); si todo son fechas, DATE; en cualquier otro caso, un
VARCHAR/NVARCHAR dimensionado al múltiplo de 50 inmediatamente superior a la
cadena más larga, con un mínimo de 50 y un máximo de 4000. Las columnas
completamente vacías salen como VARCHAR(255).
Ese redondeo al alza es deliberado: ajustar el tamaño al carácter exacto haría fallar la importación en cuanto llegue un valor un poco más largo.
El tamaño de lote
Los INSERT se agrupan en sentencias multivalor. Con el valor por defecto, 100,
cada INSERT INTO lleva hasta 100 filas entre paréntesis; puedes bajarlo hasta
1 —una sentencia por fila, útil si tu importador las procesa de una en una— o
subirlo hasta 1000, que reduce el número de sentencias y acelera la carga.
Si tu motor tiene un límite de tamaño de sentencia o de parámetros, baja el lote antes de ejecutar.
Preguntas frecuentes
¿Crea índices, claves primarias o restricciones?
No. El script crea una tabla plana con sus columnas y tipos, nada más. Las claves y los índices dependen de decisiones de modelado que la hoja no contiene.
¿Puedo insertar en una tabla que ya existe?
Sí: desactiva la opción de crear la tabla y el archivo llevará solo los
INSERT. Asegúrate de que los nombres de columna de la hoja coinciden con los
de tu tabla, porque se emiten explícitamente en cada sentencia.
¿Qué pasa con los acentos en los datos?
Se conservan y el archivo se descarga en UTF-8 con marca BOM. Si tu cliente SQL importa el script con otra codificación, indícale UTF-8 al abrirlo.
¿Convierte todas las hojas?
Solo la primera. Cada tabla necesita su propio nombre y su propio esquema, así que conviértelas por separado y cambia el nombre de tabla en cada pasada.
¿Y si mis títulos tienen espacios o acentos?
Se sanean automáticamente: Fecha de alta se convierte en Fecha_de_alta. Si
quieres controlar los nombres exactos, cambia los títulos en la hoja antes de
convertir. Para otros formatos de salida tienes
Excel a JSON y
Excel a CSV.