大規模なデータベースからテストデータベースにレコードの小さなサンプルをロードしようとしています。
mysqldumpに800万のうちnレコードのみを提供するようにどのように指示しますか?
ありがとう
大規模なデータベースからテストデータベースにレコードの小さなサンプルをロードしようとしています。
mysqldumpに800万のうちnレコードのみを提供するようにどのように指示しますか?
ありがとう
skaffman が言うように、--whereオプションを使用します。
mysqldump --opt --where="1 limit 1000000" database
もちろん、すべてのテーブルから最初の 100 万行が得られます。
特定のテーブルからレコードを取得したい場合はn
、次のようにすることができます。
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
1000000
これにより、指定されたテーブルの最初の行table
がファイルにダンプされますdump.sql
。
デフォルトの順序は ASC であるため、この状況で必要になることはめったにないため、DESC をすぐに使用できるように適切なデータベース設計を行う必要があります。すべてのテーブルに同じ名前 (ナチュラルまたはサロゲート) の 1 つの主キー列がある場合、次を使用して n 個の最新レコードを簡単にダンプできます。
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
これは、常に PK のIDに名前を付け、関連付けテーブルであっても複合 PK を避ける必要がある (代わりに代理キーを使用する)理由の完全な理由です。
mysqldumpには、実行するSQLクエリを指定できます。このクエリから、ダンプのデータを取得します。次に、クエリで「limit X」句を使用して、行数を制限できます。