web-dev-qa-db-ja.com

大きな.sqlファイルをPostgresにインポートする

大きなデータダンプをインポートする必要があります。

構造はすでに作成されています。ただし、データダンプは16GBです。

私がそれを簡単に試してみると

psql -d "DATABASE" < "datadump.sql"

Ubuntu DBにout of memoryメッセージが表示されます。

インポートする方法がわかりません。

DBサーバーには、16GBのRAM、50GBのディスクスペースがありません(開発者のvm)

誰もがこのファイルをインポートする方法を知っていますか?


[〜#〜]更新[〜#〜]

私のpostgresql.conf

# - Memory -

shared_buffers = 4GB            # min 128kB
                    # (change requires restart)
work_mem = 1048kB           # min 64kB
maintenance_work_mem = 2GB      # min 1MB


checkpoint_segments = 128       # in logfile segments, min 1, 16MB each
#checkpoint_timeout = 5min      # range 30s-1h
checkpoint_completion_target = 0.9  # checkpoint target duration, 0.0 - 1.0
#checkpoint_warning = 30s       # 0 disables


#------------------------------------------------------------------------------
# QUERY TUNING
#------------------------------------------------------------------------------
# - Planner Cost Constants -
effective_cache_size = 12GB

wal_buffers = 16MB

挿入は単一行で、すべて1つのテーブルに対応しています。テーブルには71列あります。

わからない、1447540行目。このファイルを開くことができるTexteditorはありません。

最初のスクリーンショットは、インポート前のfree -ht出力を示しています。 2番目のスクリーンショットは、out of memoryメッセージが表示される2秒前に撮影されました。

enter image description here

enter image description here

6
Phil795

この問題がstdinに関連していることは明らかです。ダンププロセスを制御できる場合、考えられる解決策は、psqlから_.sql_ファイルを実行しないことです。そのためには、次の2つのクエリを実行するだけです。

  1. これを元のデータベースから実行します:COPY (SELECT * FROM mytable WHERE ...) TO '/storage/mytable.dump'
  2. これを宛先データベース(メモリ不足の問題があるデータベース)から実行します:CREATE TABLE mynewtable ( ... ); COPY mynewtable FROM '/storage/mytable.dump';

COPYで利用可能なさまざまなパラメーターをいじくることができます。たとえば、gzipされたファイルまたはヘッダーとカスタムセパレーターを含むCSVをエクスポートできます: https://www.postgresql.org/docs/current/static/sql-copy.html

_pg_dumpall > /storage/db.out_を発行して元のデータベース全体をエクスポートし、_psql -f /storage/db.out postgres_を実行して新しいデータベースで再作成することもできます。 https://www.postgresql.org/docs/current/static /app-pg-dumpall.html 。これは動作するはずです。OSX(linuxのような)に数十GBの出力ファイルを問題なくダンプしたところです。

Seは、より選択的なデータベースダンプオプションのために_pg_dump_も使用します。 https://www.postgresql.org/docs/current/static/app-pgdump.html

2
pietrop