
Extrahiere einen Ausschnitt deiner Produktionsdatenbank, um Fehler lokal zu reproduzieren. Richte dbslice auf einen Datensatz, es folgt Fremdschlüsseln und liefert dir einen vollständigen, importierbaren Teilausschnitt.
Extrahiere minimale, referenziell intakte Datenbank-Teilmengen für lokale Entwicklung und Fehlersuche.
Die gesamte Produktionsdatenbank auf deinen Rechner zu kopieren ist unmöglich. Aber einen Fehler zu reproduzieren erfordert oft genau die Daten, die ihn verursacht haben. dbslice löst dies, indem nur die benötigten Datensätze extrahiert werden, wobei Fremdschlüsselbeziehungen verfolgt werden, um die referenzielle Integrität zu gewährleisten.
# Global installieren
uv tool install dbslice # oder: pip install dbslice
# Eine Bestellung und alle zugehörigen Datensätze extrahieren
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql
# In lokale Datenbank importieren
psql -d localdb < subset.sql
| Datenbank | Status |
|---|---|
| PostgreSQL | Voll unterstützt |
| MySQL | Geplant (noch nicht implementiert) |
| SQLite | Geplant (noch nicht implementiert) |
# Mit uv installieren (empfohlen)
uv add dbslice
# Ohne Installation ausprobieren
uvx dbslice --help
# Oder mit pip
pip install dbslice
# Nach Primärschlüssel extrahieren
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"
# Mit WHERE-Klausel extrahieren
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"
# Mehrere Seeds
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"
# Tiefe begrenzen (Standard: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2
# Richtung: up (nur Eltern), down (nur Kinder), both (Standard)
dbslice extract postgres://... --seed "orders.id=1" --direction up
# Erkannte sensible Felder automatisch anonymisieren
dbslice extract postgres://... --seed "users.id=1" --anonymize
# Zusätzliche Felder schwärzen
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"
Ordne Spalten visuell zu, wende Compliance-Profile an und generiere eine einsatzbereite Konfiguration – alles über eine lokale Browser-Oberfläche.
dbslice map postgres://localhost/myapp
# Benutzerdefinierter Port
dbslice map postgres://localhost/myapp --port 8888
# Funktioniert auch mit uvx (keine Installation nötig)
uvx dbslice map postgres://localhost/myapp
| Spalten Anonymisierungsregeln zuordnen | Konfiguration generieren und exportieren |
![]() | ![]() |
Läuft auf 127.0.0.1:9473 mit einem einmaligen Session-Token – keine Daten verlassen deinen Rechner. Wende GDPR-, HIPAA- oder PCI-DSS-Profile mit einem Klick an, überprüfe, was maskiert wird, und lade dann das YAML herunter.
# HIPAA Safe Harbor – maskiert automatisch alle 18 Identifikatortypen
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict
# Mehrere Profile + Audit-Manifest
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
# Erzeugt subset.sql + subset.manifest.json
# SQL (Standard)
dbslice extract postgres://... --seed "orders.id=1" --output sql
# JSON-Fixtures
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/
Für Beziehungen, die nicht im Datenbankschema definiert sind (Django GenericForeignKeys, implizite Beziehungen):
# dbslice.yaml
database:
url: postgres://localhost:5432/myapp
virtual_foreign_keys:
- source_table: notifications
source_columns: [object_id]
target_table: orders
description: "Generischer FK zu Bestellungen via ContentType"
- source_table: audit_log
source_columns: [user_id]
target_table: users
description: "Impliziter FK ohne DB-Constraint"
dbslice extract --config dbslice.yaml --seed "users.id=1"
dbslice inspect postgres://localhost/myapp
# Konfiguration aus Datenbank generieren
dbslice init postgres://localhost/myapp --out-file dbslice.yaml
# Konfiguration verwenden
dbslice extract --config dbslice.yaml --seed "orders.id=12345"
| Feature | dbslice | Jailer | Greenmask | slice-db |
|---|---|---|---|---|
| Sprache | Python | Java | Go | Ruby |
| Konfiguration | Null-Konfiguration | Erfordert Modelldatei | Konfiguration erforderlich | Manuelles YAML |
| Einrichtungszeit | Sekunden | Stunden | Mittel | Mittel |
| Anonymisierung | Integriert (Faker) | Plugin-basiert | Fortgeschrittene Transformatoren | Nicht verfügbar |
| Compliance-Profile | GDPR, HIPAA, PCI-DSS | Keine | Keine | Keine |
| Spaltenzuordnungs-UI | Integriert (lokal) | Keine | Keine | Keine |
| PII-Wert-Scan | Zweiphasig (vor/nach Maskierung) | Keine | Keine | Keine |
| Teilmengen-Bildung | FK-Traversierung | FK-Traversierung | Eingeschränkt | FK-Traversierung |
| Ausgabeformate | SQL, JSON, CSV | SQL, XML, CSV | SQL | Nur SQL |
| Zyklenbehandlung | Automatisch | Manuelle Konfiguration | Nicht zutreffend | Manuell |
| Streaming | Integriert | Konfigurierbar | Integriert | Nicht verfügbar |
| Wartung | Aktiv | Aktiv | Aktiv | Nicht gewartet |
dbslice ist die leichte, null-Konfigurations-Python-Option: Installation und Extraktion in unter einer Minute.
git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytest
MIT