mysqldump with where子句使用参照完整性

时间:2011-01-12 23:43:40

标签: mysql database innodb

我知道我可以使用“where子句”转储单个表但是我想知道是否可以转储表并且如果它们属于某个帐户ID,是否可以将所有链接记录与它们一起转储?

我的所有表都是innodb,并且已使用cascade delete的外键约束进行设置。如果我删除主表“account”,其中account_id = 1,那么链接到account_id为“1”的所有记录也将被删除。

所以我想要的是概念上类似的东西。我想在一个命令中链接到“account”表的所有表中转储“Account_id = 1”的所有数据。如果我执行以下命令,我相信它只会转储一个表:

mysqldump -t -u [username] -p test account --where="account_id = 1"

是否有另一种方法可以使用where子句在表上进行转储,并自动将数据转储到喜欢的表中而无需为每个表写单独的转储命令?最终我想为每个帐户最终得到一个.sql文件,如“account_1.sql”,account_2.sql等。

1 个答案:

答案 0 :(得分:0)

我把这个问题放在我最喜欢的列表中,看看是否有人提出了一个想法,而且我没想到会有人这样做。

一种相当有趣的方法是克隆数据库,删除所有不需要的帐户ID(删除将级联到所有表)然后转储剩余的(这将是您需要的所有帐户ID)。

我遇到了与MySQL和DBIx :: Class(Perl中的ORM)相同的问题。我想要做的是克隆一千个帐户(带有混淆的名称和电子邮件)。我最后编写了一个脚本来遍历给定用户id的外键遍历整个数据库,并以正确的顺序生成所有必需的插入语句。