01 - Carga Masiva de Datos
April 19, 2021 | Author: Anonymous | Category: N/A
Short Description
Download 01 - Carga Masiva de Datos...
Description
TALLER 05 - BASES DE DATOS AVANZADAS
YEIKOB STEVEN BERMÚDEZ RODRÍGUEZ ERIKA FERNANDA FRANCO SASTRE
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA BASES DE DATOS AVANZADAS BOGOTÁ 2016
TALLER 05 - BASES DE DATOS AVANZADAS
YEIKOB STEVEN BERMÚDEZ RODRÍGUEZ ERIKA FERNANDA FRANCO SASTRE
“Carga masiva de datos”
Profesora: Ing. Claudia Liliana Hernández
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA BASES DE DATOS AVANZADAS BOGOTÁ 2016
INTRODUCCIÓN En algunas empresas, almacenan información a través de hojas de cálculo Excel generalmente, por su facilidad y flexibilidad. Sin embargo, tal vez no cuentan con personal idóneo para cargar esta información a la base de datos de la empresa, y lo hacen insertando cada registro, uno por uno, hasta culminar la tediosa tarea. Imaginemos ahora que pasaría si fuera una organización muy grande, donde se tengan registros de miles o millones de usuarios, como el caso de la Registraría Nacional o el DANE. Sería una tarea absurda la de ingresar registro por registro, sabiendo que cada día la cantidad de información en la organización crece paulatinamente. Es por eso que existen técnicas de carga masiva de datos, es decir, archivos que contienen miles o incluso millones de registros que necesitan ser cargados a la base de datos de una organización, solamente usando una sola sentencia SQL. Sin embargo, se debe tener en claro, como está estructurada la base de datos, sus tablas y los datos, para aplicar esta función en las bases de datos de manera exitosa.
TABLA DE CONTENIDO 1.
2.
3.
PREPARACIÓN DE LA BASE DE DATOS ........................................................................ 5 1.1.
Crear la Base de Datos ................................................................................................. 5
1.2.
Crear la estructura de la bases de datos ................................................................. 5
CARGA MASIVA DE DATOS USANDO POSTGRESQL ................................................. 6 2.1.
Requisitos ........................................................................................................................ 6
2.2.
Formato del archivo de extensión .CSV ................................................................... 6
2.3.
Sentencia para PostgreSQL ........................................................................................ 6
2.4.
Probando la sentencia en PostgreSQL .................................................................... 7
CARGA MASIVA DE DATOS USANDO MYSQL ............................................................ 12 3.1.
Sentencia para carga de datos masivos en MySQL ........................................... 12
3.2.
Probando la sentencia en MySQL............................................................................ 12
4.
CARGA MASIVA DE DATOS EN MYSQL POR CONSOLA ......................................... 17
5.
CARGA MASIVA DE DATOS EN MYSQL POR CONSOLA ......................................... 23
6.
CONCLUSIONES................................................................................................................... 29
7.
REFERENCIAS ...................................................................................................................... 30
1. PREPARACIÓN DE LA BASE DE DATOS Procedimiento para cargar datos de manera masiva en el motor de bases de datos:
1.1.
Crear la Base de Datos
Abrimos el motor de bases de datos y nos autenticamos. Abrimos la consola del motor y creamos la base de datos ejecutando la siguiente sentencia: CREATE DATABASE examenes_finales; Seleccionamos la base de datos en la que vamos a trabajar con la siguiente sentencia: USE examenes_finales;
1.2.
Crear la estructura de la bases de datos
Mediante el lenguaje de definición de datos DDL, el cual ya está definido, ejecutamos las sentencias contenidas en el archivo DDL.txt (Adjunto en la carpeta de este taller) en el motor de bases de datos.
Hasta este momento, la base de datos esta lista para insertar datos.
2. CARGA MASIVA DE DATOS USANDO POSTGRESQL 2.1.
Requisitos
El tipo de archivo admitido para cargar los datos masivamente puede ser del siguiente tipo: .txt .CSV .xml .xmls Para efectos prácticos de este taller, vamos a cargar los datos masivamente mediante un archivo de extensión .CSV
2.2.
Formato del archivo de extensión .CSV
El formato para este tipo de archivo es como se plantea a continuación:
Para delimitar los campos para cada registro, se usa punto y coma ‘;’. Para delimitar los registros, se usa un salto de línea, es decir, que queda un registro debajo de otro.
Ejemplo: vamos a dejar los datos de la tabla, en el formato que se usa en .CSV. Id_persona 1001 1002
nombre_persona CLAUDIA HERNANDEZ PEPITO PEREZ
telefono_persona 3111234567 3139876543
1001;CLAUDIA HERNANDEZ; 3111234567 1002;PEPITO PEREZ; 3139876543
2.3.
Sentencia para PostgreSQL
Dependiendo del motor de bases de datos, la sentencia cambia parcial o totalmente, ya que unos motores tienen funciones distintas a otros. Para el motor de bases de datos PostgreSQL, la sentencia de carga masiva de datos es: COPY tabla FROM ‘ruta/del/archivo.extensión’ USING DELIMITERS ‘;’
Análisis de la sentencia: Se usa la palabra reservada COPY seguida del nombre de la tabla en la cual vamos a cargar los datos, luego colocamos la palabra reservada FROM para decir desde donde se va hacer la copia, la cual, va entre comillas simples especificando la ubicación del archivo, indicando también su extensión, seguidamente se usa la palabra reservada USING DELIMITERS con lo cual indicamos después en comillas simples, el carácter con el cual vamos a delimitar cada campo de un registro.
2.4.
Probando la sentencia en PostgreSQL
Teniendo nuestra base de datos creada, entendiendo como es el formato de los datos a cargar masivamente, y conociendo cómo funciona la sentencia de carga masiva de datos en PostgreSQL, ejecutamos la sentencia para la carga masiva de información a la base de datos para la tabla profesor. Para efectos prácticos, vamos a guardar el archivo que contiene los datos masivos: profesor.CSV en la ruta C:/, es decir, en la raíz del disco local C.
Ahora abrimos la consola y ejecutamos la sentencia como sigue a continuación: COPY profesor FROM ‘C:/profesor.CSV’ USING DELIMITERS ‘;’
SELECT * FROM profesor
COPY asignatura FROM ‘C:/asignatura.CSV’ USING DELIMITERS ‘;’
SELECT * FROM asignatura
COPY salon FROM 'C:/salon.CSV' USING DELIMITERS ';'
SELECT * FROM salon
COPY grupo FROM 'C:/grupo.CSV' USING DELIMITERS ';'
SELECT * FROM grupo
3. CARGA MASIVA DE DATOS USANDO MYSQL Para MySQL, los requisitos en cuanto al tipo de archivo y al formato de estos es similar a PostgreSQL, lo único que cambia es la sentencia, que en MySQL, es más compleja como ya veremos.
3.1.
Sentencia para carga de datos masivos en MySQL
Para el motor de bases de datos MySQL, la sentencia de carga masiva de datos es: LOAD DATA LOCAL INFILE ‘ruta/del/archivo.extensión’ INTO TABLE tabla FIELDS TERMINATED BY ‘;’ LINES TERMINATED BY ‘\n’ (nombre_col_1, nombre_col_2,…,nombre_col_n);
Análisis de la sentencia LOAD DATA LOCAL INFILE: Indica que se van a cargar datos desde un archivo local, es decir, alojado en la misma máquina. Luego entre comillas simples se escribe la ubicación del archivo con su respectiva extensión. INTO TABLE: Indica a que tabla se cargaran los datos masivos. Después se escribe el nombre de la tabla. FIELDS TERMINATED BY: Indica cual va a ser el delimitador de los campos de un registro, se escribe luego entre comillas simples el carácter delimitador. LINES TERMINATED BY: Indica cual va a ser el delimitador para los registros, este delimitador se escribe entre comillas simples y se recomienda usar el salto de línea \n, como en programación. Finalmente entre paréntesis se escribe el nombre de los campos en el orden como se quiere que se guarden o como se tengan los datos. Se separa con una coma estos nombres de columnas.
3.2.
Probando la sentencia en MySQL
Teniendo nuestra base de datos ya creada, entendiendo como es el formato de los datos a cargar masivamente, y conociendo cómo funciona la sentencia de carga masiva de datos para MySQL, ejecutamos la sentencia para la carga masiva de información a la base de datos para la tabla profesor. Podemos usar el mismo archivo profesor.CSV, almacenado en C:/.
Ejecutamos ahora la siguiente sentencia en MySQL: LOAD DATA LOCAL INFILE 'C:/profesor.CSV' INTO TABLE profesor FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (id_prof,nombre_prof);
Probamos el éxito de la carga masiva de datos haciendo una proyección a la tabla profesor, con SELECT * FROM profesor;
LOAD DATA LOCAL INFILE 'C:/asignatura.CSV' INTO TABLE asignatura FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (codigo_a,nombre_a);
SELECT * FROM asignatura;
LOAD DATA LOCAL INFILE 'C:/salon.CSV' INTO TABLE salon FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (numero_s,edificio_s,capacidad_s);
SELECT * FROM salon;
LOAD DATA LOCAL INFILE 'C:/grupo.CSV' INTO TABLE grupo FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (codigo_g,codigo_a_g,fecha_examen_g,hora_examen_g,num_matric_g,id_pr of,numero_s,edificio_s);
SELECT * FROM grupo;
4. CARGA MASIVA DE DATOS EN MYSQL POR CONSOLA Primero abrimos el CMD de Windows, y allí vamos a la carpeta de MySQL asi: cd / C:\Program Files\MySQL\MySQL Workbench 6.3 CE Luego, nos autenticamos con el siguiente comando: mysql –u root –p Después del comando anterior, ingresamos la contraseña. Ahora, lo que se hace después, es crear la base de datos y usarla: CREATE DATABASE examenes; USE examenes;
Luego, creamos la estructura de la base de datos, a partir del archivo DDL.txt (adjunto en la carpeta de este taller), podemos copiar y pegar cada sentencia.
El procedimiento para cargar los datos masivamente a una tabla de la base de datos, es el mismo, como el numeral (3) de este taller, carga masiva de datos usando MySQL, veamos: LOAD DATA LOCAL INFILE 'C:/profesor.CSV' INTO TABLE profesor FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (id_prof,nombre_prof);
Para corroborar que los datos se cargaron exitosamente, hacemos una proyección a la tabla profesor, con SELECT * FROM profesor;
LOAD DATA LOCAL INFILE 'C:/asignatura.CSV' INTO TABLE asignatura FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (codigo_a,nombre_a);
SELECT * FROM asignatura;
LOAD DATA LOCAL INFILE 'C:/salon.CSV' INTO TABLE salon FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (numero_s,edificio_s,capacidad_s);
SELECT * FROM salon;
LOAD DATA LOCAL INFILE 'C:/grupo.CSV' INTO TABLE grupo FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (codigo_g,codigo_a_g,fecha_examen_g,hora_examen_g,num_matric_g,id_pr of,numero_s,edificio_s);
SELECT * FROM grupo;
5. CARGA MASIVA DE DATOS EN MYSQL POR CONSOLA Primero abrimos el Shell de PostgreSQL desde el menú:
Luego, nos autenticamos dando enter seguidamente hasta el password, allí ingresamos la contraseña correcta y ya:
Ahora, lo que se hace después, es crear la base de datos y usarla: CREATE DATABASE examenes; \c examenes;
Despues copiamos las sentencias de la estructura de la base de datos a partir del archive de texto DDL.txt.
Ahora, ejecutamos las sentencias de carga de archivos masivos, al igual que el numeral (3) de este taller: COPY profesor FROM ‘C:/profesor.CSV’ USING DELIMITERS ‘;’;
Rectificamos cada tabla con una proyección: SELECT * FROM profesor;
COPY asignatura FROM ‘C:/asignatura.CSV’ USING DELIMITERS ‘;’;
SELECT * FROM asignatura;
COPY salon FROM ‘C:/salon.CSV’ USING DELIMITERS ‘;’;
SELECT * FROM salon;
COPY grupo FROM ‘C:/grupo.CSV’ USING DELIMITERS ‘;’;
SELECT * FROM grupo;
6. CONCLUSIONES La carga masiva de archivos en bases de datos, facilita enormemente el trabajo, ya que permite cargar los datos masivos, contenidos ya sean de un archivo de Excel, un block de notas u otros archivos soportados para esta técnica. Hay que conocer muy bien el motor de bases de datos con el que se esté trabajando, para ver que funciones ofrece para este tipo de características y de qué forma se usa, ya que algunos motores son más estrictos que otros en el tema de la carga masiva de datos. Por último, se debe tener cuidado en la forma como está estructurada la base de datos, mas estrictamente la tabla, y en cómo están organizados los datos masivos, almacenados en el archivo, ya que una mala práctica, puede traer desgastes técnicos y administrativos, porque se debe modificar o en su defecto, volver a crear la base de datos desde cero, en el caso de que se carguen incorrectamente los datos, y esto puede traer consecuencias fatales si se ignora, ya que sería imposible conseguir una consulta correctamente.
7. REFERENCIAS
ALARCON, Paul. “Subir un csv a una base de datos postgres”. {En línea}. 01 de Julio de 2013. {02 de Abril de 2016}. Disponible en: http://pag66.blogspot.com.co/2013/07/subir-un-csv-una-base-de-datospostgres.html LARA, Jesús. Cargar datos en mySQL con LOAD DATA INFILE. {En línea}. 03 de Agosto de 2007. {02 de Abril de 2016}. Disponible en: https://phenobarbital.wordpress.com/2007/08/03/cargar-datos-en-mysql-con-loaddata-infile/
View more...
Comments