SQLite para Lakehouse com Python e Azure Data Lake Gen2¶
Este conjunto de scripts permite exportar dados de um banco SQLite local para arquivos CSV e carregá-los na arquitetura Lakehouse (landing zone) no Azure Data Lake Gen2, com controle total sobre sobrescrita e limpeza dos arquivos.
Pré-requisitos¶
- Python 3.8+
- Bibliotecas:
pandas
,azure-storage-file-datalake
,sqlite3
- SAS Token do Azure Storage com permissões adequadas
- Acesso ao arquivo SQLite local
O arquivo SQLite utilizado neste projeto está disponível publicamente em: > https://www.kaggle.com/datasets/terencicp/e-commerce-dataset-by-olist-as-an-sqlite-database?resource=download
Baixe o arquivo e coloque-o no diretório indicado em
db_path
.
Instalação de Dependências¶
Configuração¶
1. Parâmetros do Azure Storage¶
Edite as seguintes variáveis no script:
account_name = "SEU_ACCOUNT_NAME" # Nome da storage account
sas_token = "SEU_SAS_TOKEN" # Token SAS do Azure Storage
filesystem_name = "landing-zone" # Nome do container
landing_zone_path = "csvs" # Pasta de destino no Data Lake (ou "" para raiz)
2. Parâmetros do SQLite¶
db_path = '../data/db.sqlite' # Caminho para o banco SQLite
export_dir = '../data/exported_tables' # Diretório para salvar os CSVs
Modos de Operação¶
Tanto a exportação quanto o upload aceitam três modos:
'skip'
: pula arquivos que já existem (não sobrescreve nada)'overwrite'
: sobrescreve arquivos existentes'force'
: deleta arquivos antigos antes de exportar/subir
Exemplo de configuração:
export_mode = 'skip' # Para exportação do SQLite
upload_mode = 'overwrite' # Para upload ao Data Lake
Como Usar¶
1. Edite o script scripts/export_and_upload_sqlite_to_datalake.py
com seus parâmetros.¶
2. Execute o script:¶
3. Exemplo de uso das funções no seu próprio notebook ou script:¶
from export_and_upload_sqlite_to_datalake import export_sqlite_to_csv, create_datalake_client, upload_files_to_datalake
# Parâmetros
account_name = "SEU_ACCOUNT_NAME"
sas_token = "SEU_SAS_TOKEN"
filesystem_name = "landing-zone"
landing_zone_path = "csvs"
db_path = 'data/db.sqlite'
export_dir = 'data/exported_tables'
# Modos
export_mode = 'force' # 'skip', 'overwrite' ou 'force'
upload_mode = 'force' # 'skip', 'overwrite' ou 'force'
# Exportação
export_sqlite_to_csv(db_path, export_dir, mode=export_mode)
# Cliente Data Lake
datalake_client = create_datalake_client(account_name, sas_token, filesystem_name)
# Upload
upload_files_to_datalake(export_dir, landing_zone_path, datalake_client, mode=upload_mode)
O que cada modo faz?¶
- skip: nunca sobrescreve arquivos já existentes, ideal para execuções incrementais.
- overwrite: sempre sobrescreve arquivos existentes, sem deletar explicitamente antes.
- force: deleta arquivos antigos antes de exportar/subir, garantindo limpeza total.
Fluxo de Processamento¶
- Exportação do SQLite: Exporta todas as tabelas para CSV, conforme o modo escolhido.
- Upload para o Data Lake: Faz upload dos CSVs para a landing zone, conforme o modo escolhido.
- Logs informativos: O script imprime o modo selecionado e o que está sendo feito em cada etapa.
Estrutura de Saída¶
Landing Zone¶
landing-zone/csvs/
├── customers.csv
├── geolocation.csv
├── leads_closed.csv
├── ...
└── sellers.csv
Troubleshooting¶
- Permissões SAS: Certifique-se de que o SAS Token tem permissões de leitura, escrita, criação e deleção para o container e objetos.
- Erros de conexão: Verifique o caminho do banco SQLite e as credenciais do Azure.
- Sobrescrita/limpeza: Use o modo adequado para seu caso de uso.
Personalização¶
- Para exportar apenas algumas tabelas, edite a função de exportação para filtrar as tabelas desejadas.
- Para mudar o formato de saída (ex: Parquet), adapte a função de exportação.
Dúvidas ou problemas? Consulte o script e os prints de log para entender o que foi feito em cada etapa.