benmorel/smartdump

一起导出选定的MySQL表及其关系

0.2.0 2020-11-23 13:02 UTC

This package is auto-updated.

Last update: 2024-09-21 01:45:21 UTC


README

导出MySQL数据库的引用完整性子集。

注意:虽然这个工具目前只针对MySQL,但它被设计成未来能够支持其他RDBMS。

License

简介

你是否曾经需要从MySQL数据库中导出几个表,但最终导出的外键约束已损坏?如果你可以导入你的数据所依赖的每一个外键行,而且仅此而已,会怎么样?这个工具正是这样做的。

假设你想要导出下面的 order_items

如果你使用 mysqldump,你将得到整个 order_items 表,其中包括到 ordersproducts 的外键约束已损坏。

如果你使用 smartdump,你将得到你想要的 order_items 表中的行(或者整个表,取决于你),加上满足其约束所需的 ordersproducts 表的行,加上,反过来,满足剩余约束所需的 userscountries 表的行!💪

这里的关键点是,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 设计。