問題タブ [pg-restore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - バイナリ pgdump (圧縮) をプレーン SQL ファイルに変換するにはどうすればよいですか?
データベース ダンプ内のデータを検索したいのですが、これらのダンプはバイナリ圧縮形式 (PGDMP
ヘッダー) を使用しています。
これらを復元せずに SQL に変換するにはどうすればよいですか?
postgresql - pg_restoreに相当するSQLコマンド
に相当する SQL コマンドはありますpg_restore
か? psycopg2
Pythonを使用して PostgreSQL データベース (AWS RDS 上) に接続することはできますが、 pg_restore
. pg_dump
なしで作成されたダンプを復元するにはどうすればよいpg_restore
ですか?
postgresql-9.1 - データベースを復元しようとすると PgAdmin III が応答しない
(バックアップ ファイルを使用して) データベースを復元しようとしています。PgAdmin III (Postgresql 9.1) を使用しています。バックアップ ファイルを選択した後、pg_restore.exe が実行されていることを示すウィンドウが表示され、PgAdmin が応答していません。数時間経過しています (RAM 不足の問題ではありません)。
バックアップ ファイルのサイズ (500 MB) が原因かもしれませんが、数日前に 300 MB のバックアップ ファイルを使用してデータベースを復元したことがあり、スムーズに完了しました。ちなみにバックアップファイル(pg_dumpで作成)の形式は「tar」形式です。
心当たりがある場合、またはさらに情報が必要な場合はお知らせください。誰かが持っている助けや指針に感謝します。前もって感謝します。
python - pg_restore で自動的に解凍する方法はありますか?
PostgreSQL のバックアップを作成し、ユーザーにこれらのバックアップを圧縮する機会を与えるプログラムがありました。
現在、pg_restore を使用して復元していますが、ファイルが圧縮されていると復元できません。pg_restore (pg_dump や pg_dumpall のように) で直接行う方法はありますか? または、使用されている圧縮の種類を確認して Python で解凍する必要がありますか?
postgresql - PostgreSQL でクラスターのバックアップを復元する方法は?
PostgreSQL でクラスター バックアップを復元しようとしています。私は pg_dumpall を使用し、SQL クエリを含むプレーン テキスト ファイルを生成しました。ただし、復元しようとすると、次のエラーが発生します。
pg_restore: [archiver] 入力ファイルが有効なアーカイブではないようです
データベースのバックアップ (pg_dump で生成) を復元しようとしたときにも同じエラーを受け取りましたが、その問題は解決しました。その場合、pg_restore は SQL クエリでプレーン テキストを認識しなかったため、コマンドを次のように変更しました。
そして代わりに書いた:
この方法では、生成されたファイルはプレーン テキストではないため、pg_restore はそれでうまく機能しました。
現在、pg_dumpall で同じように管理しようとしていますが、そのための -F パラメータはありません。私のコード (Python3 では、このコマンドはどの言語でも同じです) は次のとおりです。
これを管理する方法について何か考えはありますか?または、少なくともクラスターのバックアップを何らかの方法で復元する方法はありますか? 前もって感謝します!
編集
psqlを使用して復元する場合:
多くのコマンドがコンソールに表示されますが、それぞれに「既に存在します」というエラーが表示されます。2 つのクラスター (ポート 5432 および 5433) があり、5433 に接続していると確信しているのに、5432 で復元しようとしていると推測されるため、理解できません。以前にこの問題が発生した人はいますか?
postgresql - ビューで hstore 比較を使用した PostgreSQL データベースのダンプと復元が失敗する
hstore
2 つの列を比較するビューがあります。
このデータベースをダンプして復元すると、次のエラー メッセージが表示されて復元に失敗します。
次の手順で、PostgreSQL 9.3.0 でこのエラーを作成できました。
完全を期すために、ダンプと復元のプロセスは次のようになります。
pg_restore -l /tmp/hstore_test_2014-05-12.backup
hstore
ビューが作成される前に拡張機能が有効になっていることを示しています。
ちなみに、をに置き換えるNULLIF(col1, col2)
とcol1 = col2
、型の明示的な比較であるという事実にもかかわらず、エラーが消えるようpg_restore
です。
postgresql - pg_restore は、ダンプの整合性エラーについて文句を言います。それは可能ですか?
次のように OpenERP DB をダンプしました。
ソース マシンには次のものがあります。
ターゲット マシン (OpenVZ コンテナー)へscp
のダンプ。ここで、pg_restore は次のとおりです。
次のように pg_restore を実行します。
私が見ることができる唯一の違いは、両方のマシンで postgres ユーザーが同じではないことです (ただし、それは によって処理されるはずです-O
)。pg_restore は次のことについて不平を言います:
このエラーは、いくつかのテーブルに対して数回発行されます。その後、タプルの欠落に関する非常に多くのエラーが続きます。
ソースDBは問題ないように見えるので、これがどのように可能かわかりません。
復元された DB には多くの空のテーブルがあります (それぞれが失敗すると、値が長すぎます)。
さらに、同じソース マシンで pg_restore を実行します。
すべてが期待どおりに機能します。単一の警告ではありません。
私は何をすべきか?私は何を間違っていますか?
postgresql - PostgreSQL データベースを復元/巻き戻す方法
データベースの完全バックアップを毎晩行い、そのダンプを使用して独自の dev-db を作成します。dev-db の作成には約 10 分かかるため、毎朝、仕事に行く前に cron によってスケジュールされます。そのため、ほぼライブのデータベースで作業できるようになりました。
しかし、私が物事をテストしているときは、データベース全体または特定のテーブルだけを最初のバックアップにロールバックすると便利な場合があります。もちろん、dev-db を完全に再作成することもできますが、テストを再度実行するまでにさらに 10 分間待たなければなりません。
データベース/テーブルを特定の時点またはダンプから復元/巻き戻す簡単な方法はありますか?
pg_restore
特定のテーブルを復元するために、次のように使用しようとしました。
-c
や などのオプションも試しました--data-only
。しかし、ここには、私が予見できなかったいくつかの問題があるようです。
- 復元されたデータがコピーバックされるとき、古いデータは自動的に削除されません。
- 復元の前に FK を明示的に削除してから再度追加しなければ、これを不可能にする外部キー制約がいくつかあります (間違っている場合は修正してください)。
- 順不同になる PK シーケンスは、この時点ではまったく関係ありませんが、それも問題になる可能性があります。
編集:私がテスト/調査したその他のこと:
pg_basebackup
- より強力な代替手段
pg_basebackup
は、db-server を停止し、db-files をコピーしてから、db-server を起動することです。
上記の代替案はどちらも失敗します。これは、同じクラスターで複数のローカル データベースを実行していて、合計するとディスク上に大量のデータが存在するためです。このようにデータベースを分離する方法はありません! したがって、ここでのファイル コピー操作では速度は向上しません。
database - Heroku 自動復元
ある DB から別の DB への毎日のバックアップの自動転送を実装する必要があります。DB とアプリの両方が heroku でホストされています。次のコマンドを使用してローカル マシンから手動で実行する場合、これが可能であることはわかっています。
ただし、このプロセスは自動化し、ローカル マシンからではなく実行する必要があります。このコマンドを実行するレーキを作成するアイデアがあります。Heroku Scheduler アドオンを使用して、このレーキを毎日実行します。
これを行う方が良い方法はありますか?それとも、このタスクのためのより良い方法がありますか?
前もって感謝します。
postgresql - リモート マシンでダンプを復元する
ネットワーク内のリモート仮想マシン (たとえば、ip は 192.168.0.190、postgres ポートは 5432) に復元したい postgres dmp ファイルを含む自分のマシンがあります。ダンプをリモート マシンにコピーせずに、pg_restore を使用してこのダンプを復元することは可能ですか? ダンプのサイズは約 12GB で、仮想マシンのディスク容量は 20GB です。ありがとう