假设有一个生产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/