mysql - 对于 MySQL,是否有工具可以从一个表中转储一组行,并从所有相关表中转储所有相关(通过外键)行?

标签 mysql mysqldump

我正在使用 MySQL 数据库。

我想从一个表中转储一组行,如果这些行具有指向其他表上的行的外键,我也想转储它们。

然后我想将这些转储加载到不同数据库中各自的表中(例如使用 LOAD DATA INFILE 命令)。所以简单地使用 select...join...into outfile 是不够的,因为结果将是一个大的连接表。

例如,表 A 有 B_id 和 C_id 列,分别指向表 B 和 C 上的行。因此,当我从表 A 中转储 3 行时,B 中的 3 个相关行和 C 中的 3 个相关行也被转储。

是否存在这样的工具/脚本?

编写一个脚本来做到这一点是非常可行的,但如果已经存在这样的工具,我不想重新发明轮子。

最佳答案

我的建议:

  1. 为导出创建临时表,例如A_export、B_export、C_export 等等。
  2. 用您要导出的行填充这些新表。使用从支持表 B、C、... 到 A_export 的连接查询使其更容易。
  3. 使用 mysqldump 转储这些表
  4. 将生成的转储文件导入目标数据库
  5. 重命名目标数据库中的表,删除“_export”后缀

关于mysql - 对于 MySQL,是否有工具可以从一个表中转储一组行,并从所有相关表中转储所有相关(通过外键)行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240037/

相关文章:

仅当行数大于零时,mysql 查询才返回

php - 如何使用表格中的按钮删除特定行的数据?

mysql - InnoDB 表存在于 MySQL 中,但在将数据库复制到新服务器后表示它们不存在

mysql - Amazon RDS mysqldump 问题

MYSQL 仅转储某些行

mysql - 将 MySQL 转储导入 R(不需要 MySQL 服务器)

php - 克隆(例如 db_de)数据库并将其翻译为第二种语言是否合理?

mysql - SQL-查询中的值重复

mysql - 在 BigQuery 中 UNION ALL 或 CONCATENATE 数据集

Php数据库同步