O SQL Backup Extractor & Model Generator é uma aplicação desktop desenvolvida em Python para simplificar e acelerar drasticamente o fluxo de trabalho de desenvolvedores, DBAs e analistas de dados que precisam inspecionar, exportar dados ou gerar modelos de carga a partir de bancos de dados locais ou arquivos de backup (.BAK) do Microsoft SQL Server.
Quantas vezes você recebeu um arquivo .BAK de vários gigabytes e precisou abrir o SQL Server Management Studio (SSMS), lidar com caminhos absolutos incompatíveis da máquina de origem, erros de permissão NTFS (Operating System Error 5) e configurar comandos manuais de RESTORE WITH MOVE apenas para consultar ou exportar uma tabela para Excel?
Este projeto resolve essa dor através de uma interface moderna e minimalista (Dark & Gold), automação de restaurações isoladas em segundo plano e motores de exportação robustos com sanitização de tipos de dados.
- Leitura Inteligente dos Metadados (
RESTORE FILELISTONLY): Inspeciona a estrutura interna de arquivos lógicos do.BAKantes da restauração. - Prevenção do Erro NTFS 5 (
Operating System Error 5): Descobre dinamicamente os diretórios padrão de dados (DATA) e logs (LOG) da instância do SQL Server local e aplicaWITH MOVEautomaticamente, evitando conflitos com caminhos do servidor de origem. - Banco Temporário Isolado: Restaura o backup sob um identificador temporário seguro (
_TEMP_EXTRACT_YYYYMMDD_HHMMSS), preservando bancos de produção. - Descarte em 1 Clique: Botão dedicado na interface para desvincular conexões ativas (
ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE) e dropar o banco temporário quando a análise terminar.
- Windows Authentication: Conexão nativa e transparente integrada ao usuário do Windows (
Trusted_Connection=yes). - SQL Server Authentication: Suporte a login via usuário explícito (ex:
sa) e senha com mascaramento visual. - Tratamento Amigável do Erro 262: Diagnóstico automático de falta de privilégio
CREATE DATABASEno bancomaster, orientando o usuário a alternar para a contasae focando diretamente no campo de credenciais.
- Exportação para Excel (.xlsx):
- Estilização visual executiva (cabeçalhos em preto/amarelo ouro
#121212e#F5C518). - Sanitização de Caracteres XML: Remoção de caracteres de controle ilegais do padrão XML 1.0 (
\x00-\x08,\x0b,\x0c,\x0e-\x1f) que quebram o parser doopenpyxl(IllegalCharacterError), preservando quebras de linha (\n) e tabulações (\t). - Sanitização de Nomes de Abas: Adequação automática às regras do Excel (substituição de
* ? : / \ [ ]e limite estrito de 31 caracteres). - Auto-Ajuste Otimizado de Colunas: Amostragem de largura calculada a partir do cabeçalho e das primeiras 100 linhas no
DataFrame, garantindo performance instantânea mesmo em tabelas com milhões de registros.
- Estilização visual executiva (cabeçalhos em preto/amarelo ouro
- Exportação para CSV:
- Padrão com delimitador
;e codificaçãoutf-8-sig(com BOM) para abertura perfeita e automática no Excel em sistemas operacionais em português. - Conversão segura de tipos binários (
VARBINARY-> representação hexadecimal0x...) eUUID/UNIQUEIDENTIFIER.
- Padrão com delimitador
- Garantia de Extensão Estrita: Prevenção ativa contra extensões repetidas ou híbridas (ex:
.excel.csvou.xlsx.csv).
- Gera automaticamente uma planilha
.xlsxcom a estrutura exata da tabela selecionada:- Aba
Modelo_Importacao: Linha de cabeçalhos identificando chaves primárias ([PK]), campos auto-incremento ([AUTO]) e obrigatoriedade (*), acompanhada de linha descritiva de tipos e linha com dados de exemplo plausíveis (e-mails, CPFs, datas e números). - Aba
Instrucoes: Dicionário completo de colunas, documentação de tipos SQL, nulidade, chaves e orientações passo a passo para carga sem falhas.
- Aba
- Arquitetura limpa sem abas confusas e sem consoles de log poluentes.
- Sidebar Dinâmica (280px): Alternador intuitivo entre Bancos do Servidor e Arquivo .BAK, gerenciamento de credenciais SQL e ações de limpeza.
- Área Principal: Filtro de busca de tabelas em tempo real, seleção em lote (Marcar Todas / Desmarcar Todas) e contador ao vivo de linhas.
- Feedback Não Bloqueante: Todas as rotinas pesadas (restauração, leitura e exportação) executadas em threads paralelas em segundo plano com barra de progresso animada e mensagens de status.
| Componente | Tecnologia | Finalidade |
|---|---|---|
| Linguagem | Python 3.10+ | Núcleo do sistema |
| Interface Gráfica | CustomTkinter | UI desktop moderna em tema escuro |
| Banco de Dados | pyodbc | Driver nativo ODBC para SQL Server 2014, 2016, 2019, 2022+ |
| Manipulação de Dados | pandas | Extração estruturada e sanitização de dataframes |
| Planilhas Excel | openpyxl | Criação, formatação e estilização de planilhas .xlsx |
sql-backup-extractor/
├── main.py # Interface gráfica principal e controladores de eventos
├── sql_manager.py # Gerenciador de conexões, ODBC, restore WITH MOVE e queries
├── exporter.py # Motores de exportação Excel/CSV e gerador de templates
├── run.bat # Script de inicialização com setup automático de virtualenv
├── requirements.txt # Dependências do projeto
├── README.md # Documentação técnica completa
├── LINKEDIN_POST.md # Copywriting para divulgação profissional
└── tests/
├── test_sql_manager.py # Testes de drivers, queries e sanitização de dados
├── test_exporter.py # Testes de CSV, Excel, XML clean, sheet name e templates
└── test_main_ui.py # Testes headless de inicialização e componentes da UI
- Windows 10 ou 11.
- Microsoft SQL Server instalado localmente (qualquer edição: Express, Developer ou Standard).
- Microsoft ODBC Driver for SQL Server (Driver 17, Driver 18 ou SQL Server padrão).
- Python 3.10 ou superior.
O projeto acompanha um script inteligente que verifica a presença do Python, cria o ambiente virtual isolado (.venv), instala ou atualiza as dependências necessárias e executa o software:
- Dê um duplo clique no arquivo:
run.bat
- O sistema inicializará pronto para uso!
-
Clone o repositório:
git clone https://github.com/PedroH2M/sql-backup-extractor.git cd sql-backup-extractor -
Crie e ative o ambiente virtual:
python -m venv .venv .\.venv\Scripts\Activate.ps1 -
Instale as dependências:
pip install -r requirements.txt
-
Inicie a aplicação:
python main.py
O projeto conta com mais de 20 testes unitários automatizados cobrindo sanitização de caracteres proibidos em XML, isolamento de restore, detecção de drivers ODBC e componentes da UI:
.\.venv\Scripts\python.exe -m unittest discover -s tests -t .Saída esperada:
.....................
----------------------------------------------------------------------
Ran 21 tests in 1.135s
OK
Contribuições, sugestões e correções são bem-vindas!
- Faça um Fork do projeto
- Crie uma branch para sua funcionalidade (
git checkout -b feature/nova-funcionalidade) - Faça o commit de suas alterações (
git commit -m 'feat: adiciona nova funcionalidade') - Faça o push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Desenvolvido por Pedro Miguel
Conecte-se comigo no LinkedIn | GitHub: @PedroH2M