
Извлеките фрагмент вашей рабочей базы данных для локального воспроизведения ошибок. Укажите dbslice на запись, он проследует по внешним ключам и предоставит вам полное, готовое к импорту подмножество.
Извлекайте минимальные, сохраняющие ссылочную целостность подмножества базы данных для локальной разработки и отладки.
Копирование целой продукционной базы данных на вашу машину нецелесообразно. Но для воспроизведения ошибки часто требуются именно те данные, которые её вызвали. dbslice решает эту задачу, извлекая только необходимые записи и следуя внешним ключам для обеспечения ссылочной целостности.
# Установка глобально
uv tool install dbslice # или: pip install dbslice
# Извлечение заказа и всех связанных записей
dbslice extract postgres://localhost/myapp --seed "orders.id=12345" > subset.sql
# Импорт в локальную базу данных
psql -d localdb < subset.sql
| База данных | Статус |
|---|---|
| PostgreSQL | Полностью поддерживается |
| MySQL | Запланировано (ещё не реализовано) |
| SQLite | Запланировано (ещё не реализовано) |
# Установка с помощью uv (рекомендуется)
uv add dbslice
# Попробовать без установки
uvx dbslice --help
# Или с помощью pip
pip install dbslice
# Извлечение по первичному ключу
dbslice extract postgres://user:pass@host:5432/db --seed "orders.id=12345"
# Извлечение с условием WHERE
dbslice extract postgres://localhost/db --seed "orders:status='failed' AND created_at > '2024-01-01'"
# Несколько записей-затравок
dbslice extract postgres://localhost/db \
--seed "orders.id=100" \
--seed "orders.id=101"
# Ограничение глубины (по умолчанию: 3)
dbslice extract postgres://... --seed "orders.id=1" --depth 2
# Направление: up (только родители), down (только дочерние), both (по умолчанию)
dbslice extract postgres://... --seed "orders.id=1" --direction up
# Автоматическая анонимизация обнаруженных конфиденциальных полей
dbslice extract postgres://... --seed "users.id=1" --anonymize
# Редактирование дополнительных полей
dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address"
Визуально сопоставьте столбцы, примените профили соответствия и сгенерируйте готовую к использованию конфигурацию — всё в локальном браузере.
dbslice map postgres://localhost/myapp
# Пользовательский порт
dbslice map postgres://localhost/myapp --port 8888
# Также работает с uvx (не требуется установка)
uvx dbslice map postgres://localhost/myapp
| Сопоставление столбцов с правилами анонимизации | Генерация и экспорт конфигурации |
![]() |
![]() |
Работает на 127.0.0.1:9473 с одноразовым токеном сессии — данные не покидают вашу машину. Примените профили GDPR, HIPAA или PCI-DSS одним кликом, просмотрите, что будет скрыто, затем скачайте YAML.
# HIPAA Safe Harbor — автоматически маскирует все 18 типов идентификаторов
dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict
# Несколько профилей + манифест аудита
dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql
# Создаёт subset.sql + subset.manifest.json
# SQL (по умолчанию)
dbslice extract postgres://... --seed "orders.id=1" --output sql
# 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/
Для связей, не определённых в схеме базы данных (Django GenericForeignKeys, неявные связи):
# dbslice.yaml
database:
url: postgres://localhost:5432/myapp
virtual_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"
dbslice inspect postgres://localhost/myapp
# Генерация конфигурации из базы данных
dbslice init postgres://localhost/myapp --out-file dbslice.yaml
# Использование конфигурации
dbslice extract --config dbslice.yaml --seed "orders.id=12345"