假设有一个生产DB P和一个本地DB L。我希望有一个来自P的数据子集,并将它们还原到L中。
我知道,可以很容易地从sqldump中的表中提取数据的子集。但是,如果它是一个有50个表的DB呢?一个人能很容易的sqldump所有的表为第一个,例如,1000,记录吗?
另外,假设是star schema,是否可以使用连接到大多数其他表的主表,并为该表选择前1000条记录,并相应地检索1000条记录的外键数据子集?
发布于 2016-07-16 03:59:48
我不认为有什么简单的方法可以一次做到这一点。对数据进行子集的唯一方法是使用-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如果数据库中的所有其他表都是子表。
https://stackoverflow.com/questions/38407430
复制相似问题