Cómo importar un archivo CSV en una tabla de una base de datos MySQL
Este artículo del tutorial presentará dos métodos para importar datos de un archivo de valores separados por comas (CSV
) en una base de datos MySQL e insertarlos en una tabla.
Introduciremos diferentes enfoques para importar un archivo CSV en MySQL. Esta tarea se puede hacer de forma programada, ejecutando una serie de comandos SQL; o de forma interactiva, utilizando el diálogo de importación de archivos de un cliente gráfico de MySQL, como HeidiSQL.
LOAD DATA INFILE SQL
para importar CSV a MySQL
Veamos primero cómo importar el archivo CSV programáticamente usando la sentencia LOAD DATA INFILE SQL
.
Antes de que puedas importar el archivo, necesitarás crear la tabla que contiene los datos importados. Supongamos que tu archivo CSV contiene información de libros, dividida en los campos ISBN, Título, Autor y ListPrice. Para crear dicha tabla, necesitas ejecutar un comando como este:
CREATE TABLE BooksCSV (
ISBN VARCHAR(255) NULL,
title VARCHAR(255) NULL,
author VARCHAR(255) NULL,
ListPrice VARCHAR(255) NULL
);
Se recomienda que todos los campos admitan valores NULL y que la tabla no tenga una clave primaria, porque no se sabe de antemano si los datos del archivo CSV están completos y normalizados.
Otra recomendación es utilizar los campos VARCHAR
sólo en el caso de datos numéricos, para evitar errores en el proceso debido a datos mal formateados en el archivo. Después de importar los datos, se pueden limpiar directamente en la base de datos, leyendo las filas de la tabla y haciendo las validaciones y correcciones necesarias.
Una vez que se tiene la tabla de destino de los datos, es necesario identificar la ruta del archivo CSV. Supongamos que la ruta completa del archivo es C:\csvdata\books.csv
. Entonces, para importar ese archivo a tu tabla, debes ejecutar el comando:
LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV `
La sentencia LOAD DATA INFILE
requiere que especifiques el archivo fuente y la tabla de destino. Opcionalmente, también puede especificar otros parámetros, como el carácter separador de campos, el calificador de texto y la existencia de filas de encabezamiento.
En el siguiente ejemplo, los parámetros añadidos especifican que los campos están separados por comas, que las cadenas están encerradas por comillas dobles y que la primera fila debe ser ignorada porque contiene cabeceras de columna.
LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;
Ahora que ya sabes cómo importar un archivo CSV en MySQL de forma programada.
Usa HeidiSQL para importar CSV a MySQL
Veamos cómo hacerlo interactivamente usando un cliente gráfico de MySQL, como HeidiSQL.
Los pasos son los mismos que hemos visto arriba:
- Crear la tabla
- Importar el contenido del archivo en él.
Para crear la tabla usando HeidiSQL, necesitas conectar el cliente al servidor MySQL y seleccionar la base de datos donde quieres que se importen los datos. Entonces haga clic en el botón derecho de la base de datos y seleccione la opción Create New - Table
.
Hay que introducir el nombre de la tabla en el campo correspondiente y añadir las columnas. Para añadir una columna, haga clic en el botón +
, e introduzca su nombre y tipo de datos.
En este ejemplo, la tabla se llama BooksCSV
, y los campos son los mismos que usamos en el ejemplo anterior.
Una vez que termines de agregar las columnas, haz clic en Save
para crear la tabla en la base de datos.
Después de crear la tabla, puedes importar los datos desde el archivo CSV. Pero antes de iniciar el proceso de importación, necesitas habilitar la carga de datos locales en los componentes del cliente y del servidor cambiando los parámetros de inicio de cada uno. Hay algunas consideraciones de seguridad que debes tener en cuenta al habilitar la carga de datos locales. Para aprender más sobre ellas, lea este artículo de los documentos oficiales de MySQL.
Cuando estés listo para importar el archivo CSV, ve al menú Herramientas en HeidiSQL y selecciona la opción Importar archivo CSV. Debes especificar la ruta del archivo CSV a importar y seleccionar la base de datos y la tabla donde quieres que se inserten los datos importados. Puedes desmarcar los campos de la tabla si hay más campos en la tabla que en el archivo. Por último, haga clic en el botón “Importar” y el proceso se iniciará.
Para realizar la importación, la interfaz gráfica emite el mismo comando de CARGAR DATOS que describimos anteriormente para la opción programática, por lo que el resultado final es prácticamente el mismo: la tabla de la base de datos se rellenará con los datos leídos del archivo CSV.
Para más información sobre el uso de la declaración LOAD DATA, consulte este artículo de la documentación oficial de MySQL.