假设有一个作品DB
P
和一个本地DB
L
。我想从[{1}}获取一部分数据,并将其恢复为P
。
我知道可以轻松地L
来自sqldump
中表格的数据子集。
但是,如果它是一个mysql
,比方说有50个表呢?是否可以轻松地DB
第一个(例如1000个)记录的所有表格?
作为奖励,假设它是sqldump
,是否可以使用连接到大多数其他表的主表,并选择该表的前1000条记录并检索外部数据的子集相应地键入1000条记录?
答案 0 :(得分:2)
我不认为这是一个简单的方法。对数据进行子集化的唯一方法是使用-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
如果数据库中的所有其他表都是子项。
答案 1 :(得分:1)
对于类似的问题,我发现了一个名为Jailer的东西:http://jailer.sourceforge.net/它从您选择的根表开始提取互连数据,而不会破坏外键关系。当然,您可能有多个根表连接所有其他根表,因此请单独选择它们。
就像你只想要一个城市表中的5个城市一样,它检测到国家表连接到城市表并转储这5个城市的国家等。