MySQL: Cargar Datos desde un archivo CSV

En muchas ocasiones, lo que necesitamos es cargar información desde un archivo, ya sea Excel (por ejemplo), a una tabla de MySQL. Este procedimiento, podemos hacerlo fácilmente mediante una sentencia LOAD DATA, exportando el archivo de Excel a un formato de texto plano CSV (separado por comas).

Primero, debemos exportar los datos desde el archivo de Excel a un archivo con formato de texto plano CSV (separado por comas). Una vez teniendo el archivo CSV, podemos importarlo fácilmente a la tabla de MySQL mediante la sentencia LOAD DATA.

Hagamos ahora un ejemplo, para verlo más de cerca. Primero, crearemos una sencilla tabla con datos y posteriormente, cargaremos un archivo muestra CSV (separado por comas), a nuestra table de ejemplo.

Creación de tabla de ejemplo

Crearemos una tabla con una estructura muy simple para nuestro ejemplo, mediante una sentencia CREATE TABLE.

create table amigos (
id_amigo int not null auto_increment primary key,
nombre varchar(30) not null,
edad int not null,
status int not null default 1);

E insertamos la siguiente información, mediante una sentencia INSERT INTO:

insert into amigos values
(0, 'alexandra', 25, 1),
(0, 'enrique', 27, 1),
(0, 'federico', 23, 1);

Nota: Como definimos el campo id_amigo como auto_increment, al ingresar un 0 como valor, automáticamente se asigna un número consecutivo al registro ingresado.

Al ejecutar la sentencia anterior, habremos creado una tabla como la siguiente, visualizamos la información mediante una sentencia SELECT:

select * from amigos;
+----------+-----------+------+--------+
| id_amigo | nombre    | edad | status |
+----------+-----------+------+--------+
|        1 | alexandra |   25 |      1 |
|        2 | enrique   |   27 |      1 |
|        3 | federico  |   23 |      1 |
+----------+-----------+------+--------+

Ahora, lo que deseamos es ingresar datos desde un archivo de texto CSV (separado por comas), a nuestra tabla de ejemplo.

Archivo de Excel a Cargar a la tabla

Crearemos un archivo de Excel con los datos que deseamos cargar a la tabla.

tabla_amigos_load

Ahora, exportamos la información a un archivo CSV (separado por comas). Normalmente, con hacer clic en la opción de menú: Archivo -> Guardar como…, podemos seleccionar el formato CSV (separado por comas), en el formato del archivo resultante a guardar. Para éste ejemplo, he exportado el archivo con el nombre: amigos_load.csv. Al abrir el archivo en un editor de textos, podemos ver que la información se muestra como siguie:

0,julio,27,1
0,ana,23,0
0,maría,26,1
0,daniel,30,0
0,carlos,27,1
0,laura,24,1

Importación de datos a tabla de ejemplo

Ahora, realizaremos la importación de los datos a nuestra tabla de ejemplo mediante una sentencia LOAD DATA.

load data infile 'D:\amigos_load.csv'
into table amigos fields terminated by ',';

Al consultar nuevamente la información de la tabla, ahora tendremos ya los datos previos, así como los nuevos cargados desde el archivo:

select * from amigos;
+----------+-----------+------+--------+
| id_amigo | nombre    | edad | status |
+----------+-----------+------+--------+
|        1 | alexandra |   25 |      1 |
|        2 | enrique   |   27 |      1 |
|        3 | federico  |   23 |      1 |
|        4 | julio     |   27 |      1 |
|        5 | ana       |   23 |      0 |
|        6 | maría     |   26 |      1 |
|        7 | daniel    |   30 |      0 |
|        8 | carlos    |   27 |      1 |
|        9 | laura     |   24 |      1 |
+----------+-----------+------+--------+

Variaciones

Es común que al crear el archivo CSV separado por comas, los datos de cada campo vengan encapsulados entre comillas dobles, como en el siguiente ejemplo:

"0","julio","27","1"
"0","ana","23","0"
"0","maría","26","1"
"0","daniel","30","0"
"0","carlos","27","1"
"0,"laura","24","1"

Si es el caso, entonces la sentencia LOAD DATA, tendría que quedar como sigue:

load data infile 'D:\amigos_load.csv'
into table amigos fields terminated by ',' enclosed by '"';

Recomendaciones

Muchas veces, algunos de los campos que vamos a importar son cantidades monetarias o fechas. Para esos campos, recomiendo que antes de exportar el archivo CSV (separado por comas) desde Excel, se formateen las columnas de esos datos a un formato que no cause mucho conflicto a la hora de importar los datos a la tabla de MySQL.

De preferencia, formatea las cantidades monetarias a formato numérico, con el caracter de punto (.) como separador de cifras decimales y sin separador de miles, ni tampoco símbolo de moneda.

Y las fechas/fecha-hora, formatearlas al formato stadard: “AAAA-MM-DD” para datos de tipo fecha y con el formato “AAAA-MM-DD HH:mm:ss” para los datos de tipo fecha-hora.

Se que existen miles manuales y o tutoriales para éste y otras funcionalidades de MySQL, pero trato de hacer mi aporte. Por otro lado, uno más no creo que haga daño. Espero les haya servido, ¡Hasta la próxima!

Esta entrada fue publicada en MySQL, Tutoriales y etiquetada , , , . Guarda el enlace permanente.

Una respuesta a MySQL: Cargar Datos desde un archivo CSV

  1. adrian dijo:

    excelente aporte me sirvio muchisismo

Deja un comentario