mysql - 如何从mysql中的整个数据库的每个表中sqldump数据子集

标签 mysql database mysqldump

假设有一个生产DB P 和一个本地DB L。我想从 P 中获取数据的子集,并将它们恢复到 L 中。

我知道可以很容易地sqldump mysql 表中的数据子集。 但是,如果它是一个包含 50 个表的 DB 怎么办?是否可以轻松地 sqldump 第一个记录的所有表,比如 1000 条记录?

作为奖励,假设它是星型模式,是否可以使用连接到大多数其他表的主表,并为该表选择前 1000 条记录并检索1000条记录对应的外键数据?

最佳答案

我不认为有一种简单的方法可以一次完成所有这些。对数据进行子集化的唯一方法是使用 -w 选项,但它会尝试对所有表使用相同的 WHERE 条件。您可以分两步完成:

mysqldump -w 'id < 1000' dbname mastertable > mastertable.sql
mysqldump -w 'master_id < 1000' dbname child1 child2 child3 ... > children.sql

这假设所有子表的外键都使用相同的名称。

您可以将第二个命令简化为:

mysqldump --ignore-table=dbname.mastertable -w 'master_id < 1000' dbname > children.sql

如果数据库中的所有其他表都是子表。

关于mysql - 如何从mysql中的整个数据库的每个表中sqldump数据子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38407430/

相关文章:

mysql - Amazon RDS mysqldump 问题

mysqldump 不工作

php - MYSQL最佳行数统计方法-大型数据库

mysql - 完整性约束违规 : 1452 Cannot add or update a child row:

Php mysqli 和存储过程

java - 从数据库向其赋值后变量为空

sql - MS SQL 选择表

mysql - MySQL中以特定方式在一列中排序

java - 如何将其保存到 parse.com 数据库?

mysql - 使用 mysqldump 跳过某些列 "fields"