大きなデータダンプをインポートする必要があります。
構造はすでに作成されています。ただし、データダンプは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秒前に撮影されました。
この問題がstdin
に関連していることは明らかです。ダンププロセスを制御できる場合、考えられる解決策は、psql
から_.sql
_ファイルを実行しないことです。そのためには、次の2つのクエリを実行するだけです。
COPY (SELECT * FROM mytable WHERE ...) TO '/storage/mytable.dump'
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