1

大量のレコードを含むMySQLテーブルがありますが、それぞれ100万レコードの.CSVチャンクでエクスポートする簡単な方法はありますか?

4

2 に答える 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-sqlsplitLinux、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 に答える