Carga masiva de .csv y reestructuración de columnas para exportar
Publicado por Rvm (3 intervenciones) el 13/08/2021 18:25:34
Hola a tod@s,
soy nuevo por aquí y comenzando con SQL. Os agradecería mucho que pudierais ayudarme a resolver la siguientes de dudas, de lo que será mi primer "proyecto" de práctica.
Duda: modificar la estructura de datos en las columnas.
crear script para aplicar dicha modificación a todo el lote de 100-150 .csv una vez cargados.
Origen de datos:
cada tabla .csv se corresponde con un mes del año obtenida de una base de datos abierta en internet.
Estructura de la tabla
>Columnas: flujo (TEXT E /I), año( Varchar 20XX), mes (int XX), estado (TEXT), pais (int XXX), provincia (int), euros (decimal), dolares (decimal), nivel_taric (int X), cod_taric (int XXX), kilogramos (decimal)
Datos una vez cargados en MySQL 8.0
Para cargar uno de los .csv a modo de prueba ejecuté lo siguiente:
Ahora, quiero filtrar toda la información en función de Flujo= I y cod_taric= 080440. Y mostrar solo algunas de las columnas, para esto ejecuté lo siguiente:
.
Hasta aquí todo mas o menos en orden.
Ahora vienen mis dudas.
1º) Si tengo otro archivo correspondencias.csv con las correspondencias en Texto para la variable pais y cod_taric,
¿cómo podría mostrar en mi BD dichos valores sustituidos por el texto que le corresponde según correspondencias.csv?
2ª) necesito exportar mi BD filtrada con la estructura siguiente. ! con 2 columnas nuevas
Columnas: Pais (Texto), euros (decimal), cod_taric (int XXX), mes / 20XX (que muestre Kg (decimal)) , total 20XX (que muestre Kg (decimal)
3º) qué script debería ejecutar junto con el LOAD DATA INFILE para cargar todos los .csv?
4º) qué script debería ejecutar junto con SELECT FROM WHERE, para obtener la nueva estructura de la base de datos del punto 2º?
Muchisimas gracias por adelantado por vuestra ayuda y tiempo!
soy nuevo por aquí y comenzando con SQL. Os agradecería mucho que pudierais ayudarme a resolver la siguientes de dudas, de lo que será mi primer "proyecto" de práctica.
Duda: modificar la estructura de datos en las columnas.
crear script para aplicar dicha modificación a todo el lote de 100-150 .csv una vez cargados.
Origen de datos:
cada tabla .csv se corresponde con un mes del año obtenida de una base de datos abierta en internet.
Estructura de la tabla
>Columnas: flujo (TEXT E /I), año( Varchar 20XX), mes (int XX), estado (TEXT), pais (int XXX), provincia (int), euros (decimal), dolares (decimal), nivel_taric (int X), cod_taric (int XXX), kilogramos (decimal)
Datos una vez cargados en MySQL 8.0
Para cargar uno de los .csv a modo de prueba ejecuté lo siguiente:
1
2
3
4
5
6
7
8
9
SET SESSION sql_mode = ''; SET GLOBAL local_infile=1;
USE avodb;
LOAD DATA INFILE 'C:\comex_taric_201810.csv'
INTO TABLE avotable
FIELDS TERMINATED BY '\t' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Ahora, quiero filtrar toda la información en función de Flujo= I y cod_taric= 080440. Y mostrar solo algunas de las columnas, para esto ejecuté lo siguiente:
1
2
3
4
SELECT flujo, año, mes, pais, euros, cod_taric, kilogramos
FROM avodb.avotable
WHERE cod_taric = 080440 AND flujo = 'I'
ORDER BY kilogramos, pais;
Hasta aquí todo mas o menos en orden.
Ahora vienen mis dudas.
1º) Si tengo otro archivo correspondencias.csv con las correspondencias en Texto para la variable pais y cod_taric,
¿cómo podría mostrar en mi BD dichos valores sustituidos por el texto que le corresponde según correspondencias.csv?
2ª) necesito exportar mi BD filtrada con la estructura siguiente. ! con 2 columnas nuevas
Columnas: Pais (Texto), euros (decimal), cod_taric (int XXX), mes / 20XX (que muestre Kg (decimal)) , total 20XX (que muestre Kg (decimal)
3º) qué script debería ejecutar junto con el LOAD DATA INFILE para cargar todos los .csv?
4º) qué script debería ejecutar junto con SELECT FROM WHERE, para obtener la nueva estructura de la base de datos del punto 2º?
Muchisimas gracias por adelantado por vuestra ayuda y tiempo!
Valora esta pregunta


0