jueves, 7 de mayo de 2015

Como migrar un archivo texto a una tabla MySQL



Objetivo
Migrar un archivo texto a una tabla en MySQL. 

Ejercicio:
Dado este archivo texto "animal.csv" que contiene los siguientes datos: código de la mascota, nombre, Tipo de mascota: P(perro) o G(gato), sexo: M(macho) H(Hembra), código de la jaula, Vacuna: S(S) o N(No) 


1,Budy,P,M,E05,N
2,Pipo,P,M,E02,N
3,Nuna,P,H,E02,S
4,Bruts,P,M,E03,S
5,Americo,G,M,E04,S
6,Sombra,P,H,E05,S
7,Amaya,G,H,E04,S
8,Talia,G,H,E01,N
9,Trabis,P,M,E02,S
10,Tesa,G,H,E01,S
11,Titito,G,M,E04,N
12,Truca,P,H,E02,S
13,Zulay,P,H,E05,S
14,Dandi,G,M,E04,S
15,Ras,G,M,E01,N
16,Canela,P,H,E02,S

Se requiere migrar estos datos a una tabla en una base de datos en MySQL:

1. Se crea la base de datos:
CREATE DATABASE IF NOT EXISTS zoologico;

2. Se activa la base de datos;
USE zoologico;

3. Se crea una tabla dentro de la base de datos:
CREATE TABLE IF NOT EXISTS animales(
codigo INT(5) NOT NULL,
nombre VARCHAR(30) NOT NULL,
tipo ENUM("P","G") NOT NULL,
sexo ENUM("M","H") NOT NULL,
jaula CHAR(3)NOT NULL,
vacuna CHAR(1) NOT NULL,
PRIMARY KEY(codigo)
) ENGINE=INNODB;

4. Se migran los datos del archivo "animal.csv" a la tabla "animales":
LOAD DATA LOCAL INFILE "animal.csv" INTO TABLE animales FIELDS TERMINATED BY ",";


Descripción de la sentencia:
LOAD DATA: Indica que se cargará un archivo tipo texto.
LOCAL INFILE: Indica que el archivo se encuentra en la máquina del usuario.
INTO TABLE: Indica en que tabla se migrarán los datos.
FIELDS TERMINATED BY ",": Indica que los campos en el archivo texto están separados por comas.

Otros parámetros opcionales: 
IGNORE 1 LINES: Ignora la primera línea del archivo texto.
LINES TERMINATED BY "\n": Indica que el final de cada fila termina con un salto de línea "\n".
FIELDS OPTIONALLY ENCLOSED BY '"': Indica que algunos campos pueden estar encerrados entre comillas dobles. (") 

Si al usar el comando LOAD DATA aparece el siguiente error:
ERROR 1148 (42000): the used command is not allowed with this MySQL version.

Esto significa que la opción de LOAD DATA se encuentra desactivada en el MySQL. Una forma de de cambiar esta configuración es modificando el archivo "my.cnf" y la otra es ingresar al mysql utilizando el siguiente parámetro:

# mysql -u root -p contraseña --local-infile

Temas relacionados:
Cómo migrar una tabla MySQL a un archivo texto







No hay comentarios:

Publicar un comentario