2011-01-12 8 views
1

"where句"を使用して1つのテーブルをダンプすることができますが、テーブルをダンプしてすべてのリンクレコードをそれらに属している場合、特定のアカウントIDですか?mysqldumpと参照整合性を使用して

私のすべてのテーブルはinnodbで、カスケード削除による外部キー制約を使用して設定されています。 account_id = 1のメインテーブル "account"を削除すると、 "1"のaccount_idにリンクされているすべてのレコードも削除されます。

私が欲しいのは、コンセプトが似ています。 1つのコマンドで "account"テーブルにリンクするすべてのテーブルに "Account_id = 1"のすべてのデータをダンプします。

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

句は、自動的にテーブルを好きでデータをダンプ場所を別々記述することなくして、テーブルの上にダンプする別の方法があります:私は、次のコマンドを実行した場合、私はそれが1つのテーブルのみをダンプします信じています各テーブルのdumpコマンド?最終的には、 "account_1.sql"、account_2.sqlなどの各アカウントの.sqlファイルを作成したいと考えています。

答えて

0

この質問を私のお気に入りのリストに入れて、誰かがアイデアを持っているかどうかを確認しました。私は誰も期待していなかったので。

DBをクローンし、不要なアカウントIDをすべて削除し(すべてのテーブルに削除がカスケードされます)、残っているものをダンプします(必要なすべてのアカウントIDになります)。

私はMySQLとDBIx :: Class(PerlのORM)と同じ問題を実行していました。私がしたかったのは、1000件のアカウントを(名前がわかりにくく、電子メールで)複製することでした。私は、指定されたユーザーIDの外部キーを介してデータベース全体を走査し、必要な挿入ステートメントを適切な順序で生成するスクリプトを作成しました。

関連する問題