Esta es una herramienta que permite cargar un gran volumen de datos a partir de parquets a tablas en una base de datos PostgreSQL. Esta herramienta cuenta con una interfaz mediante CLI, al igual que una libreria para uso programatico.
Las tablas a las que se le cargaran datos deben existir anteriormente en la base de datos.
Para instalar la herramienta basta con ejecutar:
poetry installEl programa puede ser ejecutado con el siguiente commando:
poetry run mdbl data-load --parquets <parquets_folder> --mapping <mappings.toml>La flag --parquets recibe la direccion a la carpeta base en donde se encuentran
los parquets, estos deben a su vez encontrarse en sub carpetas (el nombre de estas
es el que se utiliza en los mappings).
Un ejemplo de parquets_folder puede ser el siguiente:
/parquets/parquet101.parquet02.parquet03.parquet
/parquet2a.parquetb.parquetc.parquet
el nombre de los archivos dentre de las sub carpetas no es importante.
Esta flag es opcional y por defecto se busca en el directorio ./parquets.
La flag --mapping recibe un archivo de mappings el cual puede ser un archivo
TOML o YAML que indica los mappings. Este campo es obligatorio.
Ejemplo de formato de archivo de mappings:
# TOML
[[tables]]
from = "parquet1"
to = "table1"
[[tables.columns]]
from = "column_in_parquet_1"
to = "column_in_table_1"
[[tables.columns]]
from = "column_in_parquet_2"
to = "column_in_table_2"
[[tables]]
from = "parquet2"
to = "table2"
[[tables.columns]]
from = "column_in_parquet_1"
to = "column_in_table1"# YAML
tables:
- from: parquet1
to: table1
columns:
- from: column_in_parquet_1
to: column_in_table_1
- from: column_in_parquet_2
to: column_in_table_2
- from: parquet2
to: table2
columns:
- from: column_in_parquet_1
to: column_in_table_1En caso de que una tabla se encuentre dentro de un schema el campo to debe
llenarse como schema.nombre. En caso de que un schema no sea indicado se
asumira como public.
Warning
El orden en el que se listan las tablas corresponde al orden en que se ejecutaran las inserciones. Esto se debe tener en consideracion a la hora de tratar con llaves primarias y foraneas.
Para conectarse a la base de datos el programa lee las siguientes variables de entorno como configuracion:
DB_NAME="postgres"
DB_USER="postgres"
DB_HOST="localhost"
DB_PORT="5432"
DB_PASS="postgres"Ademas es posible configurar estas variables directamente al llamar la aplicacion de la siguiente forma.
poetry run mdbl \
--db-name postgres \
--db-user postgres \
--db-host localhost \
--db-port 5432 \
--db-pass postgres \
data-load --mapping mapping.yaml