Este proyecto es un ETL (Extract, Transform, Load) que migra datos de una base de datos Oracle Transaccional ( Conexion Tradicional ) a una Oracle Datawarehouse ( Conexion por Wallet ). Se ha desarrollado utilizando Python ( FASTAPI ), Docker y la librería InstantClient de Oracle.
- ETL: Extrae, transforma y carga datos de Oracle Transaccional a Oracle Datawarehouse.
- Servidor FastAPI: Proporciona una interfaz accesible para las funciones del ETL.
- APScheduler: Programa la ejecución del ETL de forma automática.
- Python
- Docker
- Oracle InstantClient
-
Clone el repositorio
git clone https://github.com/luis122448/python-etl-oracle-oracle.git
-
Ingresar al directorio del proyecto
cd python-etl-oracle-oracle
-
Configurar la informacion "Distinguished Name" (DN) del certificado SSL
export COUNTRY=PE export STATE=LIMA export CITY=LIMA export ORGANIZATION='' export ORGANIZATIONAL_UNIT='' export COMMON_NAME='' export EMAIL=''
-
Ejecutar el script de instalación
sudo bash install.sh
-
Defina las credenciales de la BASE DE DATOS Oracle en el archivo .env
DB_ORACLE_USER_TRANSACCIONAL='' DB_ORACLE_PASSWORD_TRANSACCIONAL='' DB_ORACLE_DSN_TRANSACCIONAL='' DB_ORACLE_USER_DATAWAREHOUSE='' DB_ORACLE_PASSWORD_DATAWAREHOUSE='' DB_ORACLE_DSN_DATAWAREHOUSE=''
-
Aidicione los archivos de la wallet de Oracle en el directorio app/wallet
cp ~/sqlnet.ora ./app/wallet cp ~/tnsnames.ora ./app/wallet cp ~/cwallet.sso ./app/wallet
-
Ejecutar el script de inicialización
sudo bash init.sh
Para el despliegue en producción se ha utilizado Docker y Docker Compose, puede revisar el archivo docker-compose.yml para conocer los detalles de la configuración.
-
Ejecutar el script de despliegue
sudo bash deploy.sh
Si desea contribuir a este proyecto, por favor siga los siguientes pasos:
- Fork el proyecto
- Cree una rama para su contribución
- Realice los cambios
- Haga un Pull Request
- Espere a que su Pull Request sea revisado
- ¡Gracias por su contribución!
Este proyecto está bajo la licencia MIT. Para más información por favor revisar el archivo LICENSE.