9

CSV を PostgreSQL データベースにインポートする例はたくさんありますが、私が必要としているのは、500,000 個の CSV を単一の PostgreSQL データベースにインポートする効率的な方法です。各 CSV は 500KB を少し超えています (合計で約 272GB のデータ)。

CSV は同じ形式であり、重複するレコードはありません (データは生データ ソースからプログラムによって生成されました)。私はオプションをオンラインで検索しており、引き続き検索しますが、可能な限り最も効率的な方法でこれを行うための指示をいただければ幸いです. 私は Python の経験がありますが、適切と思われる他のソリューションを掘り下げます。

ありがとう!

4

3 に答える 3

10

PostgreSQL ガイドの「Populating a Database」を読むことから始めると、いくつかのアドバイスが表示されます。

  1. 1 回のトランザクションでデータをロードします。
  2. 可能な限り使用COPYしてください。
  3. データをロードする前にインデックス、外部キー制約などを削除し、後で復元します。

PostgreSQL のCOPYステートメントは、既に CSV 形式をサポートしています。

COPY table (column1, column2, ...) FROM '/path/to/data.csv' WITH (FORMAT CSV)

したがって、Python をまったく使用しないか、必要な一連のCOPYステートメントを生成するためだけに Python を使用するのが最善であるかのように見えます。

于 2012-09-29T10:23:07.537 に答える
0

あなたがそこに持っているデータの素晴らしい塊。Postgre について 100% 確信があるわけではありませんが、少なくとも MySQL はいくつかの SQL コマンドを提供して、csv をテーブルに直接フィードします。これにより、挿入チェックなどがバイパスされるため、通常の挿入操作よりも 1 桁以上高速になります。

したがって、おそらく最速の方法は、単純な python スクリプトを作成して、postgre サーバーに、どの csv ファイルをどの順序で貪欲に無限のテーブルに食い尽くすかを伝えることです。

于 2012-09-28T20:24:35.040 に答える