Skip to main content

Ferramenta de extração e inserção de dados com interface PyPositron

Project description

AutoDBLoader

AutoDBLoader é uma biblioteca Python para automatizar o processo de extração e inserção de dados em bancos relacionais a partir de arquivos CSV, Parquet ou JSON, preservando a integridade referencial e respeitando relacionamentos entre tabelas.

📌 Para que serve

A biblioteca foi desenvolvida para facilitar extração e migração de dados entre bancos de dados relacionais, garantindo que:

  • Os dados sejam inseridos na ordem correta, respeitando as chaves estrangeiras;
  • Colunas únicas e relacionamentos sejam validados antes da inserção;
  • Dados sejam carregados em batches para otimizar performance e uso de memória;
  • Os dados sejam extraídos e armazenados em arquivos separados por tabela;
  • Logs de progresso sejam mantidos para permitir retomada segura em caso de falhas.

🚀 Instalação e Utilização

  • No terminal, execute:

    • pip install autodbloader
  • Após a instalação, execute autodbloader no terminal. Isso iniciará uma interface de configuração, onde é possível:

    • Configurar a conexão com o banco de dados
    • Definir métodos de extração ou inserção de dados
    • Preencher os formulários de configuração referentes às tabelas do banco
  • Depois de preencher todos os campos, é possível gerar o JSON de configuração. A partir daí, há duas opções:

    • Executar diretamente pela interface e acompanhar os logs de execução no terminal
    • Copiar o JSON e utilizá-lo em um arquivo Python, instanciando a biblioteca e chamando o método desejado com a configuração criada

🧩 Executar a interface via script

Agora é possível abrir a interface gráfica do AutoDBLoader diretamente por um script Python.
Isso permite utilizá-la sem precisar do terminal.

Exemplo de uso:

import autoDBLoader

autoDBLoader.run_interface()

⚙️ Como funciona

A biblioteca opera em três etapas principais:

  1. Validação

    • Verifica a estrutura do dicionário de configuração;
    • Confere a existência dos arquivos e tabelas;
    • Valida a compatibilidade de tipos entre arquivo e banco;
    • Checa permissões de acesso ao banco;
    • Confere diretórios e arquivos existentes;
    • Valida a execução de queries personalizadas.
  2. Extração

    • Executa queries padrão ou personalizadas;
    • Extrai os dados do banco de dados;
    • Salva no diretório e formato informado (CSV, Parquet ou JSON).
  3. Inserção ordenada

    • Insere os dados respeitando os relacionamentos;
    • Adiciona colunas temporárias para controle dos antigos IDs;
    • Executa inserção em lotes para maior performance;
    • Mantém logs para garantir continuidade em caso de falhas.

📋 Requisitos e configurações obrigatórias:

Processo de inserção:

  • O banco de dados já deve estar criado com a estrutura das tabelas necessárias.
  • O usuário da conexão precisa ter permissão para criar, alterar e deletar tabelas (criação de colunas, alteração, inserção e exclusão).
  • SGBDs suportados:
    • MySQL
    • PostgreSQL
    • Oracle

Para que o processo de inserção funcione corretamente, os arquivos de dados devem atender aos seguintes critérios:

  • Cada arquivo representa uma tabela do banco de dados.
  • Os nomes das colunas no arquivo devem corresponder exatamente aos nomes dos atributos da tabela no banco.
  • Os arquivos devem conter todas as chaves primárias dos registros.
  • As chaves estrangeiras também devem estar presentes e corretas para garantir a integridade referencial.
  • Os arquivos devem estar completos e consistentes com a estrutura da tabela, incluindo tipos de dados compatíveis.
  • Os arquivos devem estar no formato informado no JSON de configuração e podem ser:
    • CSV (com separador configurável)
    • Parquet
    • JSON (newline-delimited)
  • Os arquivos podem conter atributos extras, que serão descartados conforme especificado no campo unwanted_attributes no JSON de configuração.

⚠️ Observação: O AutoDBLoader não cria nem adivinha chaves primárias ou estrangeiras. Se algum valor estiver faltando ou incorreto, a inserção pode falhar ou gerar inconsistências no banco.

Processo de extração:

  • O usuário da conexão precisa ter permissão para executar executar consultas SQL simples (ex.: SELECT * FROM tabela).
  • SGBDs suportados:
    • MySQL
    • PostgreSQL
    • Oracle
  • Os dados de cada tabela serão salvos em arquivos separados, onde cada arquivo contém unicamente os dados de uma tabela.
  • Os arquivos serão salvos no formato informado no JSON de configuração, que pode ser:
    • CSV (com separador configurável)
    • Parquet
    • JSON (newline-delimited)
  • A extração pode utilizar uma consultas SQL personalizada, que deve ser informada no JSON de configuração e cujo resultado será salvo no arquivo da tabela.

📂 Sistema de Logs e Retomada

O AutoDBLoader possui um sistema de logs que garante a continuidade do processo em caso de falhas, registrando quais tabelas já foram processadas.

  • Inserção de dados

    • O log é salvo em uma tabela no banco de dados chamada log_autodbloader.
    • Esta tabela só é criada se ocorrer um erro durante o processo de inserção.
    • Ela registra quais tabelas já foram inseridas, permitindo que a próxima execução retome de onde parou.
  • Extração de dados

    • O log é salvo em um arquivo JSON chamado log_tables_extract.json.
    • Ele armazena as tabelas que já foram extraídas.
    • Na próxima execução, o AutoDBLoader verifica esse arquivo e retoma apenas as tabelas que ainda não foram extraídas.

⚠️ Observação: Manter o arquivo log_tables_extract.json ou a tabela log_autodbloader é importante para garantir que o processo seja retomado corretamente após falhas.

📄 Formato do JSON de configuração

O processo é orientado por um JSON de configuração contendo:

a) Configuração de conexão ao banco

  • hostname: Host de conexão ao banco.
  • username: Usuário de conexão.
  • password: Senha do usuário.
  • database: Banco de dados que será utilizado.
  • port: Porta de acesso ao banco.
  • sgbd: Sistema gerenciador de banco de dados (mysql, postgre, oracle, em letras minúsculas).

b) Configuração de tabelas (inserção)

  • name_table: Nome da tabela.
  • path_file: Caminho do arquivo que contém os dados da tabela.
  • type_file: Tipo do arquivo (csv, parquet, json, em letras minúsculas).
  • file_sep: Usado apenas para arquivos CSV. Informa o caractere separador (ex.: "," ou ";")
  • unwanted_attributes: Lista de atributos que devem ser ignorados.

c) Configuração de tabelas (extração)

  • name_table: Nome da tabela.
  • query: Consultas SQL personalizada para extrair os dados.
    • Deve conter uma consulta SQL válida.
    • Se não for necessária, utilize "query": "".
  • type_file: Tipo do arquivo (csv, parquet, json, em letras minúsculas).
  • file_sep: Usado apenas para arquivos CSV. Informa o caractere separador (ex.: "," ou ";")

d) Configuração adicional para extração

  • path: Diretório onde os arquivos extraídos serão salvos.

📌 Exemplo simplificado de configuração para inserção de dados:

{
    "db":{
        "hostname":"localhost",
        "username":"root",
        "password":"admin",
        "database":"fraud_analysis",
        "port":3306,
        "sgbd":"mysql"
        },
    "tables":[
        {
            "name_table":"users",
            "path_file":"C:/user/dados/users_data.csv",
            "type_file":"csv",
            "unwanted_attributes":["use_cpf", "use_password"],
            "file_sep":","
        },
        {
            "name_table":"cards",
            "path_file":"C:/user/dados/cards_data.parquet",
            "type_file":"parquet",
            "unwanted_attributes":[]
        },
        {
            "name_table":"transactions",
            "path_file":"C:/user/dados/transactions_data.json",
            "type_file":"json",
            "unwanted_attributes":[],
        },
        {
            "name_table":"mcc",
            "path_file":"C:/user/dados/mcc_codes.csv",
            "type_file":"csv",
            "unwanted_attributes":[],
            "file_sep":";"
        }
    ]
}

📝 Exemplo de inserção utilizando Python:

    from autoDBLoader import insert_date

    config  =  {"db":{ ... },
                "tables":{ ... }}
    insert_date(config)

📌 Exemplo simplificado de configuração para extração de dados:

{
    "db":{
        "hostname":"localhost",
        "username":"root",
        "password":"admin",
        "database":"fraud_analysis",
        "port":3306,
        "sgbd":"mysql"
        },
    "path": "C:/user/dados/",
    "tables":[
        {
            "name_table":"users",
            "type_file":"csv",
            "query":"SELECT use_id, use_name, use_age, use_address from fraud_analysis.users
                     WHERE use_age >= 18",
            "file_sep":","
        },
        {
            "name_table":"cards",
            "type_file":"parquet",
            "query":"",
        },
        {
            "name_table":"transactions",
            "type_file":"json",
            "query":"",
        },
        {
            "name_table":"mcc",
            "type_file":"csv",
            "query":"",
            "file_sep":";"
        }
    ]
}

📝 Exemplo de extração utilizando Python:

    from autoDBLoader import extract_date

    config  =  {"db":{ ... },
                "path": "C:/user/dados",
                "tables":{ ... }}
    extract_date(config)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autodbloader-0.1.3.tar.gz (68.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autodbloader-0.1.3-py3-none-any.whl (67.7 kB view details)

Uploaded Python 3

File details

Details for the file autodbloader-0.1.3.tar.gz.

File metadata

  • Download URL: autodbloader-0.1.3.tar.gz
  • Upload date:
  • Size: 68.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for autodbloader-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ed01ff129cd694fcd702fbd2de3d8d1bd5f9f52a5b52960131c61789d33accfa
MD5 3c6c9b4989acef8b2671e84b2b1e5b65
BLAKE2b-256 0915336efafa5329419303f4b853e61155f9be64b39ef7858b8cc77e9bce1ddf

See more details on using hashes here.

File details

Details for the file autodbloader-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: autodbloader-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 67.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for autodbloader-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 29a4ccc9a5263c75eed084ad8f16a0fcf2811f74a6c66e6b42b0f3bc6fcd7652
MD5 a32fb80c56781500382a525df3a8ac5a
BLAKE2b-256 1fef520e3a091c59f26b556785108d45a905556b3b74c4d13833a42f68f9e929

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page