一致的数据库部分导出工具
项目描述
XDump
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_STORED、zipfile.ZIP_DEFLATED、zipfile.ZIP_BZIP2和zipfile.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。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定要选择哪一个,请了解更多关于 安装软件包 的信息。