web-dev-qa-db-ja.com

11.2GBテキストファイルのインポートMySQLまたはPostgreSQL

私は少し奥行きが足りないかもしれませんが、誰かが大きな(11.2GB)タブ区切りテキストファイル(2.2GB tar.gzファイル)をMySQL 5.5.41またはPostgreSQL 9.3.6にインポートした経験があることを期待して、このクエリを送信します。空間データ(緯度、経度、高度)であるため、フィールドには倍精度が必要です。

サーバーと対話するためにphpMyAdminとphpPGAdminを使用してUbuntu 14.04でMySQLとPostgreSQLをセットアップしています。ただし、コマンドラインの操作はおそらくより良いと思います。

私は少し読みましたが、MySQLのデータを分割する方法があるようです(SQLDumpSplitter2- http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/ =)。

提案や代替オプションは大歓迎です。

ありがとうポール

3
Paul Young

PostgreSQLの場合、 pgloader の使用をお勧めします。

pgloaderは、インポートできない行を別のテキストファイルに残します。そのため、問題の原因を確認し、エラーを修正して、データのインポートを完了できます。 COPYは、予期しない行に遭遇したときに単にクラッシュしました。これは、非常に大きなファイルの場合に数回発生する可能性があります。

pgloaderは、データを並行してロードするように設定することもできますが、単一のテーブルをロードするだけの場合、どの程度役立つかわかりません。

MySQLの場合、標準のLOAD DATA LOCAL INFILEは、あなたが手に入れるのと同じくらい高速です(私の知る限り)。インポートできない行ごとにwarningを吐き出すので、後で戻ってそのデータを確認できます。

それ以外は、11.2 GBは悪くありません。インポートするテーブルの既存のインデックスをすべて削除し、後でインデックスを再作成してください。

同等のサイズのテキストファイルを問題なく両方のデータベースにインポートしました。データのロードとインデックスの作成には数時間かかる場合があるため、一晩置いてください。

1
ostrokach