benmorel / smartdump
一起导出选定的MySQL表及其关系
0.2.0
2020-11-23 13:02 UTC
Requires
- php: ^7.4 || ^8.0
- ext-pdo: *
- symfony/console: ^5.1
Requires (Dev)
- vimeo/psalm: ^4.1
This package is auto-updated.
Last update: 2024-09-21 01:45:21 UTC
README
导出MySQL数据库的引用完整性子集。
注意:虽然这个工具目前只针对MySQL,但它被设计成未来能够支持其他RDBMS。
简介
你是否曾经需要从MySQL数据库中导出几个表,但最终导出的外键约束已损坏?如果你可以导入你的数据所依赖的每一个外键行,而且仅此而已,会怎么样?这个工具正是这样做的。
假设你想要导出下面的 order_items
表
如果你使用 mysqldump
,你将得到整个 order_items
表,其中包括到 orders
和 products
的外键约束已损坏。
如果你使用 smartdump
,你将得到你想要的 order_items
表中的行(或者整个表,取决于你),加上满足其约束所需的 orders
和 products
表的行,加上,反过来,满足剩余约束所需的 users
和 countries
表的行!💪
这里的关键点是,smartdump
将只导入满足请求表/行的约束所需的行。
安装
目前唯一支持的安装方法是通过 Composer
composer require benmorel/smartdump
用法
要导出一些表,只需运行
vendor/bin/smartdump db.table1 db.table2
或者,如果你的所有表都在同一个数据库中
vendor/bin/smartdump --database db table1 table2
要导出表的子集,请在表名后添加额外条件
vendor/bin/smartdump "db.table:LIMIT 100"
或者甚至
vendor/bin/smartdump "db.table:WHERE user_id=123 ORDER BY id DESC LIMIT 10"
选项
带值的选项
不带值的选项
未来范围(待办事项,想法)
- 独立PHAR版本
- 支持其他RDBMS
- 支持将传入关系加载到表中(?)
目前,只跟踪传入关系,跟踪我们导出的每一行的传入关系可能也很有趣;至少作为一个选项? - 一种不导出,而是扫描整个数据库以查找损坏的外键约束的模式
数据库图由 dbdiagram.io 提供。
标志由 Pixel perfect 设计。