2011-01-12 49 views
1

我知道我可以使用「where子句」轉儲單個表,但我想知道是否有可能轉儲表並將所有鏈接記錄與它們一起轉儲,如果它們屬於某個帳戶ID?mysqldump與where子句使用參照完整性

我所有的表都是innodb,並且已經使用外鍵約束與級聯刪除進行了設置。如果我刪除了account_id = 1的主表「account」,那麼所有鏈接到account_id爲「1」的記錄也將被刪除。

所以我想要的是概念上類似的東西。我想在一個命令中的所有鏈接到「account」表的所有表中轉儲「Account_id = 1」的所有數據。如果我做了下面的命令,我相信它會只轉儲一個表:

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

有另一種方式對錶進行dump與where子句和自動轉儲喜歡錶中的數據,而無需編寫單獨的每個表的轉儲命令?最終我想最終爲每個帳戶如「account_1.sql」,account_2.sql等.sql文件。

回答

0

我已經把這個問題放在我最喜歡的列表中,看看有人是否有想法,並且因爲我期待沒有人這樣做。

一個很有趣的方法是克隆數據庫,刪除所有不需要的賬戶ID(刪除將級聯到所有表),然後轉儲剩餘的(這將是所有您需要的賬戶ID)。

我正在運行與MySQL和DBIx :: Class(Perl中的ORM)相同的問題。我想要做的是克隆一千個帳戶(包含混淆名稱和電子郵件)。我最終編寫了一個腳本,通過給定用戶ID的外鍵遍歷整個數據庫,並以正確的順序生成所有必需的插入語句。