152

大規模なデータベースからテストデータベースにレコードの小さなサンプルをロードしようとしています。

mysqldumpに800万のうちnレコードのみを提供するようにどのように指示しますか?

ありがとう

4

4 に答える 4

234

skaffman が言うように、--whereオプションを使用します。

mysqldump --opt --where="1 limit 1000000" database

もちろん、すべてのテーブルから最初の 100 万行が得られます。

于 2008-09-25T20:39:45.620 に答える
62

特定のテーブルからレコードを取得したい場合はn、次のようにすることができます。

mysqldump --opt --where="1 limit 1000000" database table > dump.sql

1000000これにより、指定されたテーブルの最初の行tableがファイルにダンプされますdump.sql

于 2013-11-07T08:23:20.933 に答える
14

デフォルトの順序は ASC であるため、この状況で必要になることはめったにないため、DESC をすぐに使用できるように適切なデータベース設計を行う必要があります。すべてのテーブルに同じ名前 (ナチュラルまたはサロゲート) の 1 つの主キー列がある場合、次を使用して n 個の最新レコードを簡単にダンプできます。

mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql

これは、常に PK のIDに名前を付け、関連付けテーブルであっても複合 PK を避ける必要がある (代わりに代理キーを使用する)理由の完全な理由です。

于 2017-09-08T09:42:54.147 に答える
7

mysqldumpには、実行するSQLクエリを指定できます。このクエリから、ダンプのデータを取得します。次に、クエリで「limit X」句を使用して、行数を制限できます。

于 2008-09-25T20:31:06.687 に答える