dbslice
Extraire des sous-ensembles minimaux et référentiellement intacts de bases de données pour le développement local et le débogage.
Le problème
Copier une base de données de production entière sur votre machine est infaisable. Mais reproduire un bug nécessite souvent d’avoir les données exactes qui l’ont causé. dbslice résout ce problème en extrayant uniquement les enregistrements dont vous avez besoin, en suivant les relations de clés étrangères pour garantir l’intégrité référentielle.
Démarrage rapide
# Install globally
uv tool install dbslice # or: pip install dbsliceExtract an order and all related records
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sqlImport into local database
psql -d localdb < subset.sqlFonctionnalités
- Démarrage sans configuration -- Introspection automatique du schéma, aucun fichier de modèle de données requis
- Commande unique -- Extraction de sous-ensembles complets de données avec une seule invocation CLI
- Sûr par défaut -- Détection automatique et anonymisation des champs sensibles (emails, téléphones, SSN, etc.)
- Profils de conformité -- Profils intégrés GDPR, HIPAA Safe Harbor et PCI-DSS avec analyse PII en deux phases
- Interface de mappage des colonnes -- Interface locale dans le navigateur pour mapper visuellement les colonnes, appliquer les profils de conformité et exporter la configuration
- Formats de sortie multiples -- SQL, JSON et CSV
- Streaming -- Extraction mémoire-efficace pour grands ensembles de données (plus de 100K lignes)
- Clés étrangères virtuelles -- Support des GenericForeignKeys de Django et des relations implicites via la configuration
- Fichiers de configuration -- Configuration basée sur YAML pour des extractions reproductibles
- Validation -- Vérifie l'intégrité référentielle des données extraites
Support des bases de données
| Base de données | Statut | |-----------------|----------------------------| | PostgreSQL | Entièrement supporté | | MySQL | Prévu (pas encore implémenté) | | SQLite | Prévu (pas encore implémenté) |
Installation
# Install with uv (recommended)
uv add dbsliceTry without installing
uvx dbslice --helpOr with pip
pip install dbsliceUtilisation
Extraction de base
# Extract by primary key
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"Extract with WHERE clause
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"Multiple seeds
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"Parcours de Contrôle
# Limit depth (default: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2Direction: up (parents only), down (children only), both (default)
dbslice extract postgres://... --seed "orders.id=1" --direction upAnonymisation
# Auto-anonymize detected sensitive fields
dbslice extract postgres://... --seed "users.id=1" --anonymizeRedact additional fields
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"Interface de mappage des colonnes
Mappez les colonnes visuellement, appliquez des profils de conformité, et générez une configuration prête à l'emploi — le tout depuis une interface locale dans le navigateur.
dbslice map postgres://localhost/myappCustom port
dbslice map postgres://localhost/myapp --port 8888Also works with uvx (no install needed)
uvx dbslice map postgres://localhost/myapp
| Associer les colonnes aux règles d’anonymisation | Générer et exporter la configuration |
![]() |
![]() |
S’exécute sur 127.0.0.1:9473 avec un jeton de session unique — aucune donnée ne quitte votre machine. Appliquez les profils GDPR, HIPAA ou PCI-DSS en un clic, vérifiez ce qui est masqué, puis téléchargez le YAML.
Profils de conformité
# HIPAA Safe Harbor — auto-masks all 18 identifier types
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strictMultiple profiles + audit manifest
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
Produces subset.sql + subset.manifest.json
Formats de sortie
# SQL (default)
dbslice extract postgres://... --seed "orders.id=1" --output sqlJSON 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/Clés étrangères virtuelles
Pour les relations non définies dans le schéma de la base de données (GenericForeignKeys de Django, relations implicites) :
# dbslice.yaml
database:
url: postgres://localhost:5432/myappvirtual_foreign_keys:
- source_table: notifications
source_columns: [object_id]
target_table: orders
description: "Generic FK to orders via ContentType"- source_table: audit_log
source_columns: [user_id]
target_table: users
description: "Implicit FK without DB constraint"dbslice extract --config dbslice.yaml --seed "users.id=1"Inspecter le schéma
dbslice inspect postgres://localhost/myappFichier de configuration
# Generate config from database
dbslice init postgres://localhost/myapp --out-file dbslice.yamlUse config
dbslice extract --config dbslice.yaml --seed "orders.id=12345"Comment ça fonctionne
- Introspecter -- Lit le schéma de la base de données pour découvrir les tables et les relations de clés étrangères
- Parcourir -- À partir d’enregistrements semences, suit les relations FK via BFS
- Extraire -- Récupère tous les enregistrements identifiés
- Trier -- Trie topologiquement les tables pour un ordre d’INSERT correct
- Exporter -- Génère SQL/JSON/CSV avec échappement approprié
Comparaison
| Fonctionnalité | dbslice | Jailer | Greenmask | slice-db | |----------------|---------|--------|-----------|----------| | Langage | Python | Java | Go | Ruby | | Configuration | Zéro-config | Nécessite fichier modèle | Configuration requise | YAML manuel | | Temps d’installation | Secondes | Heures | Moyen | Moyen | | Anonymisation | Intégrée (Faker) | Basée plugin | Transformateurs avancés | Non disponible | | Profils de conformité | RGPD, HIPAA, PCI-DSS | Aucun | Aucun | Aucun | | Interface mappage colonnes | Intégrée (locale) | Aucune | Aucune | Aucune | | Scan valeurs PII | Deux phases (pré/post masque) | Aucun | Aucun | Aucun | | Sous-ensemble | Parcours FK | Parcours FK | Limité | Parcours FK | | Formats de sortie | SQL, JSON, CSV | SQL, XML, CSV | SQL | SQL seulement | | Gestion des cycles | Automatique | Configuration manuelle | N/A | Manuel | | Streaming | Intégré | Configurable | Intégré | Non disponible | | Maintenance | Active | Active | Active | Non maintenue |
dbslice est l’option Python légère, zéro-config : installez et extrayez en moins d’une minute.
Développement
git clone https://github.com/nabroleonx/dbslice.git
cd dbslice
uv sync --dev
uv run pytestLicense
MIT
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-19 ---

