
Extraia uma fatia do seu banco de dados de produção para reproduzir bugs localmente. Aponte dbslice para um registro, ele segue chaves estrangeiras e fornece um subconjunto completo e importável.
Extraia subconjuntos mínimos e referencialmente intactos de bases de dados para desenvolvimento local e depuração.
Copiar uma base de dados de produção inteira para a sua máquina é inviável. Mas reproduzir um bug muitas vezes exige ter exatamente os dados que o causaram. O dbslice resolve isso extraindo apenas os registos de que precisa, seguindo as relações de chave estrangeira para garantir a integridade referencial.
# Instalação global
uv tool install dbslice # ou: pip install dbslice
# Extraia uma encomenda e todos os registos relacionados
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql
# Importe para a base de dados local
psql -d localdb < subset.sql
| Base de Dados | Estado |
|---|---|
| PostgreSQL | Totalmente suportado |
| MySQL | Planeado (ainda não implementado) |
| SQLite | Planeado (ainda não implementado) |
# Instalar com uv (recomendado)
uv add dbslice
# Experimentar sem instalar
uvx dbslice --help
# Ou com pip
pip install dbslice
# Extrair por chave primária
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"
# Extrair com cláusula WHERE
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"
# Várias sementes
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"
# Limitar profundidade (padrão: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2
# Direção: up (apenas pais), down (apenas filhos), both (padrão)
dbslice extract postgres://... --seed "orders.id=1" --direction up
# Anonimizar automaticamente campos sensíveis detetados
dbslice extract postgres://... --seed "users.id=1" --anonymize
# Remover campos adicionais
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"
Mapeie visualmente colunas, aplique perfis de conformidade e gere uma configuração pronta a usar — tudo a partir de uma interface local no navegador.
dbslice map postgres://localhost/myapp
# Porta personalizada
dbslice map postgres://localhost/myapp --port 8888
# Também funciona com uvx (sem instalação)
uvx dbslice map postgres://localhost/myapp
| Mapear colunas para regras de anonimização | Gerar e exportar configuração |
![]() | ![]() |
Executa em 127.0.0.1:9473 com um token de sessão único — nenhum dado sai da sua máquina. Aplique perfis GDPR, HIPAA ou PCI-DSS com um clique, reveja o que será mascarado e, em seguida, descarregue o YAML.
# HIPAA Safe Harbor — mascara automaticamente os 18 tipos de identificadores
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict
# Vários perfis + manifesto de auditoria
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
# Produz subset.sql + subset.manifest.json
# SQL (padrão)
dbslice extract postgres://... --seed "orders.id=1" --output sql
# Fixtures JSON
dbslice extract postgres://... --seed "orders.id=1" --output json --out-file fixtures/
# CSV
dbslice extract postgres://... --seed "orders.id=1" --output csv --out-file data/
Para relações não definidas no esquema da base de dados (GenericForeignKeys do Django, relações implícitas):
# dbslice.yaml
database:
url: postgres://localhost:5432/myapp
virtual_foreign_keys:
- source_table: notifications
source_columns: [object_id]
target_table: orders
description: "FK genérica para encomendas via ContentType"
- source_table: audit_log
source_columns: [user_id]
target_table: users
description: "FK implícita sem constrangimento na BD"
dbslice extract --config dbslice.yaml --seed "users.id=1"
dbslice inspect postgres://localhost/myapp
# Gerar configuração a partir da base de dados
dbslice init postgres://localhost/myapp --out-file dbslice.yaml
# Usar configuração
dbslice extract --config dbslice.yaml --seed "orders.id=12345"
| Funcionalidade | dbslice | Jailer | Greenmask | slice-db |
|---|---|---|---|---|
| Linguagem | Python | Java | Go | Ruby |
| Configuração | Zero-config | Requer ficheiro de modelo | Configuração necessária | YAML manual |
| Tempo de setup | Segundos | Horas | Médio | Médio |
| Anonimização | Integrada (Faker) | Baseada em plugins | Transformadores avançados | Não disponível |
| Perfis de conformidade | GDPR, HIPAA, PCI-DSS | Nenhum | Nenhum | Nenhum |
| Interface de mapeamento | Integrada (local) | Nenhum | Nenhum | Nenhum |
| Análise de valores PII | Duas fases (pré/pós-máscara) | Nenhum | Nenhum | Nenhum |
| Subconjunto | Travessia FK | Travessia FK | Limitado | Travessia FK |
| Formatos de saída | SQL, JSON, CSV | SQL, XML, CSV | SQL | Apenas SQL |
| Tratamento de ciclos | Automático | Configuração manual | N/A | Manual |
| Streaming | Integrado | Configurável | Integrado | Não disponível |
| Manutenção | Ativa | Ativa | Ativa | Sem manutenção |
O dbslice é a opção leve e sem configuração em Python: instale e extraia em menos de um minuto.
git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytest
MIT