Cargar datos desde un archivo CSV

MySQL

Hoy tuve lista una aplicación para la cual sólo me faltaba recargar la información inicial en una tabla de la base de datos. Los datos se encuentran inicialmente en un archivo CSV ( [en] comma separated values = [es] valores separados por coma ).

Podemos emplear la siguiente sintaxis:

LOAD DATA LOCAL INFILE '<RUTA>/<ARCHIVO>'
INTO TABLE <NOMBRE  DE TABLA>
FIELDS TERMINATED BY <CARACTER>
LINES TERMINATED BY <CARACTER>
(<CAMPO1>, <CAMPO2>);

Ejemplo:

LOAD DATA LOCAL INFILE '/home/adagio/files/reggaebands/bands-name-country_code.csv'
INTO TABLE bands
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, country_code);

El sistema me informó que habían 3 warnings. Procedo a inspeccionarlos con el siguiente comando:

show warnings;

Veo que tienen que ver con el separador de valores y la primera línea que ha sido truncada. El caso del separador se debía a que empleo valores que contienen una coma (“,”). Así que reemplazo el caracter de separación en el script SQL de coma a punto y coma; realizo lo mismo en el archivo CSV. Y para evitar que se procese la primera línea empleo el parámetro IGNORE LINES. Antes de ejecutar la sentencia limpio los registros con delete y reinicio el puntero del valor autoincrementable.

DELETE FROM bands;
TRUNCATE TABLE bands;

Ahora sí la sentencia SQL final y correcta:

LOAD DATA LOCAL INFILE '/home/adagio/files/reggaebands/bands-name-country_code.csv'
INTO TABLE bands
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(name, country_code);

Nos vemos pronto!

Fuentes:

MySQL 5.0 Reference Manual: LOAD DATA INFILE Syntax
scriptygoddess: Reset autoincrement value in mysql table

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s