跳转到主要内容

一致的数据库部分导出工具

项目描述

XDump

Build Status Coverage Status Documentation Status Latest PyPI version

XDump是一个工具,用于创建一致的数据库部分导出,并将其加载到数据库中。

想法是提供通过SQL查询指定导出内容的能力。

安装

您可以通过pip获取XDump

$ pip install xdump

使用示例

创建导出(例如,在生产副本上)

>>> from xdump.postgresql import PostgreSQLBackend
>>>
>>> backend = PostgreSQLBackend(dbname='app_db', user='prod', password='pass', host='127.0.0.1', port='5432')
>>> backend.dump(
    '/path/to/dump.zip',
    full_tables=['groups'],
    partial_tables={'employees': 'SELECT * FROM employees ORDER BY id DESC LIMIT 2'}
)

在本地计算机上加载导出

>>> backend = PostgreSQLBackend(dbname='app_db', user='local', password='pass', host='127.0.0.1', port='5432')
# If you need a clear DB
>>> backend.recreate_database()  # or `backend.truncate()`
>>> backend.load('/path/to/dump.zip')

默认情况下,导出是压缩的。可以通过将compression参数传递给dump方法来更改压缩级别。有效选项有zipfile.ZIP_STOREDzipfile.ZIP_DEFLATEDzipfile.ZIP_BZIP2zipfile.ZIP_LZMA

可以通过后端类的verbosity(值为0、1或2)参数自定义输出详细程度。

有两种方法可以控制导出的内容

  • dump_schema - 控制是否包含模式

  • dump_data - 控制是否包含数据

命令行界面

xload 提供了创建转储的能力。

签名

xdump [postgres|sqlite] [OPTIONS]

常用选项

-o, --output TEXT               output file name  [required]
-f, --full TEXT                 table name to be fully dumped. Could be used
                                multiple times
-p, --partial TEXT              partial tables specification in a form
                                "table_name:select SQL". Could be used
                                multiple times
-c, --compression [deflated|stored|bzip2|lzma]
                                dump compression level
--schema / --no-schema          include / exclude the schema from the dump
--data / --no-data              include / exclude the data from the dump
-D, --dbname TEXT               database to work with  [required]
-v, --verbosity                 verbosity level

PostgreSQL 特定选项

-U, --user TEXT                 connect as specified database user
                                [required]
-W, --password TEXT             password for the DB connection
-H, --host TEXT                 database server host or socket directory
-P, --port TEXT                 database server port number

xload 将转储加载到数据库中。

签名

xload [postgres|sqlite] [OPTIONS]

常用选项

-i, --input TEXT                input file name  [required]
-m, --cleanup-method [recreate|truncate]
                                method of DB cleaning up
-D, --dbname TEXT               database to work with  [required]
-v, --verbosity                 verbosity level

PostgreSQL 特定选项与 xdump 相同。

RDBMS 支持

目前仅支持以下数据库

  • PostgreSQL

  • SQLite >= 3.8.3

Django 支持

xdump.extra.django 添加到您的 INSTALLED_APPS 设置中

INSTALLED_APPS = [
   ...,
   'xdump.extra.django',
]

XDUMP 添加到您的项目设置文件中。它应包含至少两个条目

  • FULL_TABLES - 应完全转储的表列表。

  • PARTIAL_TABLES - 包含 table_name: select SQL 的字典

XDUMP = {
    'FULL_TABLES': ['groups'],
    'PARTIAL_TABLES': {'employees': 'SELECT * FROM employees WHERE id > 100'}
}

可选地,您可以使用自定义后端

XDUMP = {
    ...,
    'BACKEND': 'importable.string',
}

运行 xdump 命令

$ ./manage.py xdump dump.zip

运行 xload 命令

$ ./manage.py xload dump.zip

这两个命令的可能选项

  • -a/--alias - 允许您从 DATABASES 中选择用于执行的数据库配置;

  • -b/--backend - 可导入的字符串,指向自定义转储后端类。

xdump 命令的选项

  • -s/--dump-schema - 控制是否包含模式;

  • -d/--dump-data - 控制是否包含数据。

xload 命令的选项

  • -m/--cleanup-method - 可选地重新创建数据库或截断数据。

注意。如果转储中没有模式,则不会重新创建数据库。

以下 make 命令可用于从生产环境获取配置的转储到您的本地机器

sync-production:
    ssh -t $(TARGET) "DJANGO_SETTINGS_MODULE=settings.production /path/to/manage.py xdump /tmp/dump.zip"
    scp $(TARGET):/tmp/dump.zip ./dump.zip
    ssh -t $(TARGET) "rm /tmp/dump.zip"
    DJANGO_SETTINGS_MODULE=settings.local $(PYTHON) manage.py xload ./dump.zip

使用方法如下

$ make sync-production TARGET=john@production.com PYTHON=/path/to/python/in/venv

Python 支持

XDump 支持 Python 2.7, 3.4 - 3.7 和 PyPy 2 & 3。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪一个,请了解更多关于 安装软件包 的信息。

源代码分发

xdump-0.6.0.tar.gz (17.1 kB 查看哈希)

上传时间 源代码

构建分发

xdump-0.6.0-py2.py3-none-any.whl (19.2 kB 查看哈希)

上传于 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面