大量のレコードを含むMySQLテーブルがありますが、それぞれ100万レコードの.CSVチャンクでエクスポートする簡単な方法はありますか?
4952 次
2 に答える
6
私はこれを行います(いくつかのロックがアプリをダウンさせないと仮定します。そうでない場合は、読み取りスレーブを使用します):
mysqldump -u user -pPASS --skip-extended-insert --no-create-info --no-create-db --compact > your.sql
INSERT
これにより、行ごとのステートメントを含むファイルが得られます。
次に、以下を使用しますsplit
。
split -l 1000000 your.sql your-sql
それぞれ-1,000,000のプレフィックスが付いたファイルを作成する必要がありますyour-sql
。split
Linux、Unix、MacOSXで利用できます。
これが役立つかどうか教えてください!
于 2012-09-08T19:16:03.623 に答える
4
チャンク化しないことも同様に機能しますが、解決策は次のとおりです。
SELECT *
INTO OUTFILE 'file_0.csv' -- Change the filename here
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table
WHERE id BETWEEN 0 AND 1000000 -- And change the range here
インデックス付きwhere
の列で範囲を制限する必要があることに注意してください。そうしないと、データベースに非常に大きな負荷がかかります。
于 2012-09-08T18:17:02.163 に答える