2016-07-16 6 views
1

生産があるとします。DBPとローカルDBLがあります。私はPからのデータのサブセットを持っていて、Lにそれらを復元したいと思います。mysqlでデータベース全体の各テーブルからデータのサブセットをsqldumpする方法

私は容易にsqldumpmysqlの表のデータのサブセットを知ることができます。 しかし、たとえばテーブルが50個のDBの場合はどうなりますか?誰もが簡単にsqldump最初の1000のすべてのテーブルを記録できますか?

star schemaと仮定すると、ほとんどの他のテーブルに接続するメジャーテーブルを使用して、そのテーブルの最初の1000レコードを選択し、そのテーブルの外部キーであるデータのサブセットを取得できますか?それに対応して1000レコード?

答えて

2

私はこのすべてを一度に簡単に行う方法はないと思います。データをサブセット化する唯一の方法は、-wオプションですが、すべてのテーブルに対して同じWHERE条件を使用しようとします。

mysqldump -w 'id < 1000' dbname mastertable > mastertable.sql 
mysqldump -w 'master_id < 1000' dbname child1 child2 child3 ... > children.sql 

これは、すべての子テーブルが外部キーに同じ名前を使用していることを前提としています。

あなたはに2つ目のコマンドを簡素化することができます。データベース内の他のすべてのテーブルが子供である場合

mysqldump --ignore-table=dbname.mastertable -w 'master_id < 1000' dbname > children.sql 

1

私はJailerと呼ばれるものを見つけました。http://jailer.sourceforge.net/外部キーの関係を壊さずに選択したルートテーブルから開始して相互接続されたデータを抽出します。もちろん、他のすべてのテーブルを接続する複数のルートテーブルがあるので、それらを別々に選択することも可能です。

市のテーブルから5つの都市だけを望むように、国のテーブルが市のテーブルに接続されており、それらの5つの都市の国もダンプされていることを検出します。

関連する問題