digilist / snakedumper
Requires
- php: >=5.5
- digilist/dependency-graph: 0.2
- doctrine/dbal: ^2.10
- fzaninotto/faker: ~1.4
- monolog/monolog: ^1.14
- psr/log: ~1.0
- symfony/config: ~3.0
- symfony/console: ~3.0
- symfony/yaml: ~3.0
Requires (Dev)
- phpunit/phpunit: ~4.3
This package is not auto-updated.
Last update: 2024-09-13 14:51:46 UTC
README
SnakeDumper是一个创建合理生产数据库开发转储的工具,其中不包含任何敏感数据。它的工作方式类似于mysqldumper(或相关工具),但会对您的数据应用一系列数据转换器和过滤器。(如果没有配置过滤器或转换器,它的工作方式与任何其他转储工具完全相同。)
请注意,SnakeDumper目前处于早期预览阶段。它编写为与任何SQL兼容的数据库一起使用,但目前仅针对MySQL和SQLite进行了测试。目标是将来支持广泛的数据库系统(包括NoSQL)。
特性
过滤器
SnakeDumper允许过滤要转储的数据,以保持开发数据库的大小。因此,在从数据库加载数据之前,可以应用各种过滤器。
您可以
- 应用常规SQL条件(等于、不等于、小于等),
- 限制行数,
- 更改选定行的顺序(例如,仅选择最新条目),
- 并应用自定义SQL以获得完全的灵活性。
如果您应用这些过滤器,SnakeDumper将保持数据库转储的引用完整性,以确保所有外键有效。所有引用已从转储中排除的行的行将被跳过。例如:有一个包含客户和账单的表。您决定只转储最新的100个客户。然后SnakeDumper将自动转储属于考虑客户的账单。
此外,您还可以配置SnakeDumper以跳过整个表或某些表的内容。
数据转换器
SnakeDumper的主要目标是构建不包含任何敏感数据的合理开发转储。因此,存在各种数据转换器,允许修改转储数据,并用其他随机(或静态)数据替换所有敏感信息。
已经有很多转换器。以下是一些示例
- 随机姓氏和名字
- 随机公司名称
- 随机数字
- 空字符串
- 静态值
并且通常,您可以使用由出色的faker库提供的任何内容。
安装
您可以使用Composer(digilist/snakedumper
)安装SnakeDumper或下载phar:http://digilist.de/snakedumper.phar
使用方法
要使用SnakeDumper,您必须创建一个配置文件,该文件定义了如何转换您的数据库(请参阅示例配置)。您可以使用以下命令之一运行SnakeDumper(根据您的安装方法而定)
php bin/snakedumper dump ./demo.yml
php snakedumper.phar dump ./demo.yml
要开始,请参阅文档。
示例配置
SnakeDumper提供了许多配置选项。开始的最佳方式是查看示例配置文件(demo.yml)。
测试
目前测试套件需要一个正在运行的MySQL服务器。您可以使用以下Docker命令启动一个
docker run -it -p 3306:3306 --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=1 mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci
另外,还有一个可以用来启动Docker容器进行测试的 docker-compose.yml 文件。
安全/注意事项!
请注意,一些配置参数会直接传递给数据库服务器。虽然这个工具不会对您的数据做任何更改,但使用无效的配置参数(例如,定义一个执行更新的自定义查询)仍然可能导致您的数据被更改。因此,请不要使用任何用户提供的数据进行此工具的配置!目前我们没有进行任何安全检查!使用时请自行承担风险,我们提供绝对无保证。
此外,SnakeDumper不能保证您的备份中没有敏感数据。您 - 作为SnakeDumper的用户 - 负责正确配置和使用。
如何贡献
我们欢迎各种类型的贡献。您可以测试SnakeDumper,报告错误,提议新功能或帮助我们开发。欢迎创建新问题或打开pull请求 😃
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。