01.taller Carga Datos PSQL

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

[email protected].

ec

UNIVERSIDAD TÉCNICA DEL NORTE


FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRERA DE SOFTWARE
MATERIA: Diseño de software

Tema: Acceso inicial y básico hacia una bdd Postgresql local


Objetivo de esta Realizar una carga de un millón de registros en la bdd Postgresql
actividad: FICA

INDICACIONES:

Carga de datos en Postgresql desde un archivo CSV

La base de datos Postgresql también permite hacer la carga masiva de datos desde un archivo csv
(separado por comas). El procedimiento es el siguiente:

• El archivo a procesar se llama datos_comprobantes.csv. Este archivo contiene más de un


millón de registros de información relacionada a un sistema de facturación. Sería muy difícil
insertar esta información con el método tradicional de copiar y pegar los datos en la consola
psql, primero por la gran cantidad de información y segundo porque cada registro no está en
un formato de “insert into” sino que tiene un formato de campos separados por coma.
• Puede observarse que el archivo csv tiene un tamaño de 37Mb.
• Luego ejecutar la consola psql de Postgres (desde el menú de Windows) y acceder
utilizando el usuario postgres. Una vez que se ha conectado, crear la base de datos prueba:
[email protected]

• Una vez que esté conectado a la base de datos prueba, crear una tabla llamada
comprobante

drop table if exists comprobante;

create table comprobante(


id serial primary key,
mes varchar(6) not null,
tipo varchar(3) not null,
codigo_usuario varchar(10),
ruc varchar(13),
factura varchar(20),
base numeric(10,2),
retencion numeric(7,2),
impuesto numeric(7,2)
);

• Cargar los datos desde el archivo csv, en este caso se supone que el archivo de datos está en
la carpeta Downloads de un usuario llamado curso. Asegurarse de copiar la instrucción
completa sin saltos de línea:
[email protected]

\copy comprobante(mes,tipo,codigo_usuario,ruc,factura,base,retencion) from 'c:\Users\curso\


Downloads\datos_comprobantes.csv' delimiter ',' csv header;

• Puede constatarse que se han cargado aproximadamente un millón de registros.


• Nota: En caso de ejecutar por accidente “select * from factura” pueden cancelar la operación
presionando Ctrl+C, o si aparece el paginador de psql, puede presionar la letra q para salir
de la consulta.

Ejercicios resueltos (pegar la captura de pantalla con la salida de la consola de cada ejercicio):
• Consultar cuántos registros existen en la tabla comprobante.
select count(*) from comprobante;

• Consultar la suma del campo base en la tabla comprobante.


select sum(base) from comprobante;

• Consultar la suma de los campos base y retención de todos los registros (la base es el
subtotal de la factura y la retención es el impuesto cobrado por anticipado):
select sum(base),sum(retencion) from comprobante;

• Cuáles son los tipos de documentos que existen en la tabla comprobante?


select distinct tipo from comprobante;

• Por cada tipo de documento, cuántos existen en la tabla comprobante?


select tipo,count(*) from comprobante group by tipo;

• Obtener la cantidad de registros correspondientes al año 2009 (Nota: el campo mes tiene el
formato YYYYMM y es de tipo cadena):
select count(*) from comprobante where substring(mes,1,4)='2009';

• Cuántos comprobantes tipo FAC se emitieron en el año 2008? (Nota: el campo mes tiene el
formato YYYYMM)
select count(*) from comprobante where substring(mes,1,4)='2008' and tipo='FAC';

• Indique la cantidad de facturas anuladas (tipo ANL) agrupadas por mes.


select mes,count(*) from comprobante where tipo='ANL' group by mes;

• Indique la cantidad de facturas anuladas (tipo ANL) agrupadas por año.


select substring(mes,1,4),count(*) from comprobante where tipo='ANL' group by
substring(mes,1,4);

• Cantidad de registros cuyo código de usuario es igual a 50665:


select count(*) from comprobante where codigo_usuario='50665';

• Cantidad de registros cuyo campo base sea mayor a 50000:


select count(*) from comprobante where base > 50000;
[email protected]

• Mostrar todos los registros de tipo ANL correspondientes a agosto del año 2008:
select * from comprobante where tipo='ANL' and mes='200808';

• Mostrar los registros de tipo CRT cuyo mes esté entre octubre y diciembre del año 2009:
select * from comprobante where tipo='CRT' and mes between '200910' and '200912';

PARA RESOLVER:

• Cuál es el máximo valor del campo retención?


• Cuál es el máximo valor del campo impuesto?
• Obtenga la suma del campo base, agrupando por el campo tipo.
• Cuántos documentos existen en total en julio de 2008?
• Cuántos documentos de tipo REC existen en total desde julio de 2008 hasta septiembre de
2008?

También podría gustarte