回答:
skaffmanが言うように、-whereオプションを使用します。
mysqldump --opt --where="1 limit 1000000" database
もちろん、すべてのテーブルから最初の100万行が得られます。
SELECT * from table WHERE
ため、この場合はになりSELECT * from table WHERE 1 limit 1000000
ます。1がないと、クエリが無効になります。where句に1を指定すると(1は常にtrueであるため)、単にすべてのレコードが選択されます。
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
万レコードの2ページ目を取得する。最初のページ以外のページで--no-create-infoフラグを使用して、データのみをダンプし、テーブルの作成などは行わないようにしてください。
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を避けなければならない完全な理由です(代わりに代理キーを使用してください)。