HOWTO · MySQL
Importar archivo de Excel a una base de datos MySQL
Aprenderá sobre las diferentes y más fáciles formas de importar datos desde un archivo de Excel a la base de datos MySQL.
En esta página
Para importar un libro de Excel a MySQL, puedes guardar una hoja como CSV e importarla con LOAD DATA o phpMyAdmin, o usar Sqlizer.io para convertir el libro en SQL. Las rutas con CSV requieren una tabla de destino compatible; la opción de Sqlizer.io parte directamente del libro, pero genera SQL que debes revisar antes de ejecutarlo. Los pasos siguientes usan una tabla de estudiantes con las columnas id, firstname, lastname, gender y city.
Usar la instrucción LOAD DATA para importar datos
Guarda la hoja como CSV (delimitado por comas). Comprueba que las columnas coincidan con las de la tabla de destino, tanto en el orden como en el significado. El ejemplo supone que el CSV tiene una fila de encabezados, campos separados por comas, texto entre comillas dobles y finales de línea Unix. También supone que la tabla de destino está vacía para la primera importación; si repites la importación, puedes insertar filas duplicadas. Para evitarlo, elimina las filas ya importadas o configura el tratamiento de duplicados. Ajusta las opciones de formato para que coincidan con el archivo que hayas guardado.
Antes de cargar los datos, puedes previsualizar una fila representativa del CSV con la biblioteca estándar de Python. Este pequeño ejemplo utiliza una fila con los mismos nombres de columna que la tabla de muestra:
import csv
from io import StringIO
sample = StringIO("id,firstname,lastname,gender,city\n1,Ada,Lovelace,F,London\n")
row = next(csv.DictReader(sample))
print(f"{row['firstname']} {row['lastname']} — {row['city']}")
Ada Lovelace — London
Esta vista previa comprueba que los nombres de los encabezados y los valores se lean como esperas; no se conecta a MySQL ni sustituye la instrucción de importación que aparece a continuación.
El ejemplo para MySQL 8.0.27 utiliza un directorio de carga de un servidor Windows. LOAD DATA INFILE lee la ruta desde el sistema de archivos del servidor MySQL, por lo que el archivo debe estar disponible para el servidor y permitido por la configuración secure_file_priv. En MySQL Workbench, ejecuta la instrucción en una pestaña de consultas conectada a ese servidor; Workbench no hace que una ruta de tu equipo esté disponible para el servidor. La misma regla de ruta del lado del servidor se aplica al cliente de línea de comandos. Si usas LOAD DATA LOCAL INFILE, el cliente lee y envía el archivo; en ese caso, la configuración del cliente y del servidor debe permitir la carga local. Si se deniega el acceso, consulta la guía de seguridad de LOAD DATA de MySQL.
Para el archivo de muestra, la instrucción es LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/students.csv' INTO TABLE tb_students FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;. Sustituye la ruta, la tabla, el delimitador, las comillas y el terminador de línea para adaptarlos a tu configuración. Para datos separados por tabulaciones, usa FIELDS TERMINATED BY '\t'; para un delimitador de espacio simple, usa FIELDS TERMINATED BY ' '. Los archivos CSV de Windows suelen usar finales de línea \r\n; si las filas no se separan como esperas, utiliza el final de línea real del archivo. IGNORE 1 ROWS omite los encabezados, pero no asigna las columnas por sus nombres. Si el archivo no incluye id o el orden de sus columnas es distinto, indica las columnas de destino correspondientes después del nombre de la tabla y confirma que los valores autogenerados se gestionen como esperas.
Después de cargar los datos, comprueba la tabla en Workbench o ejecuta la consulta SELECT id, firstname, lastname, gender, city FROM tb_students LIMIT 10;. Compara las filas con el CSV y comprueba el número de filas importadas antes de usar los datos.
Método 2: usar Sqlizer.io para importar datos
Usa Sqlizer.io si quieres convertir un libro sin guardarlo primero como CSV. Selecciona el libro y MySQL como tipo de base de datos de destino; después, indica si la primera fila contiene encabezados. Elige la hoja activa o escribe su nombre, por ejemplo, students, y selecciona toda la hoja o el rango de celdas que quieras convertir. Define el nombre de la tabla de destino y genera el SQL.
Revisa las instrucciones generadas antes de ejecutarlas: comprueba la definición de la tabla, los nombres de las columnas, los valores y cualquier comportamiento relacionado con la creación de tablas o la comprobación de su existencia. Ejecuta el SQL en la base de datos prevista; luego, inspecciona la tabla y compara algunas filas representativas con el libro. Un libro puede contener datos confidenciales, así que considera su sensibilidad y las condiciones del servicio antes de subirlo a un conversor externo.
Método 3: importar datos con phpMyAdmin
Esta opción también utiliza un archivo CSV. Guarda la hoja como CSV, abre la base de datos de destino y selecciona la tabla cuyas columnas coincidan con las del archivo. La tabla del ejemplo, tb_students_phpmyadmin, tiene las columnas id, firstname, lastname, gender y city. En phpMyAdmin, abre la pestaña Import de la tabla, elige el archivo CSV y selecciona CSV como formato. Configura las opciones específicas para que coincidan con el archivo, incluido el separador de campos, las comillas de texto, el final de línea y si se debe omitir la fila de encabezados. Inicia la importación con Go.
Si las columnas del CSV no coinciden con las de la tabla, corrige la tabla o el archivo antes de importarlo; seleccionar el formato CSV no hace que las columnas se asignen automáticamente por sus encabezados. Cuando termine la importación, examina la tabla o ejecuta una consulta para obtener filas y compara varios valores y el número de filas con el archivo de origen.
Conclusiones
Elige LOAD DATA si puedes guardar la hoja como CSV y el servidor MySQL tiene acceso al archivo; usa phpMyAdmin para importar un CSV desde el navegador. Sqlizer.io convierte un libro en SQL que puedes inspeccionar y ejecutar en la base de datos prevista. Con cualquiera de los métodos, adapta las columnas y el formato de origen a la tabla de destino y, después, verifica las filas insertadas.