web-dev-qa-db-ja.com

PostgreSQLダンプファイルをPostgresデータベースに復元する方法

.SQL拡張子のダンプファイルがあります(実際にはプレーンテキストのSQLファイルです)。作成したデータベースに復元したい。 pgAdmin III を使用していますが、「復元ウィザード」を使用すると、「復元」ボタンが強調表示されません。代わりに、.backupファイル拡張子が必要です。

ダンプを復元するためのコマンドをシェルで使用しようとしましたが、まだ機能しませんでした。

私はこれに初心者です。誰かが私を助けることができれば私は義務付けられます。

編集

NewTestDBに座って、PostGresのシェルSQLペインに対して次のコマンドを使用しました。

newTestDB-# \i E:\db-rbl-restore-20120511_Dump-20120514.sql

それでも同じエラーが発生しました(「Permission Denied」)。

権限を引き上げると、PostgreSQLのデフォルトテーブルが表示されます。

      List of tablespaces
Name       |  Owner   | Location
-----------+----------+----------
pg_default | postgres |
pg_global  | postgres |

(2 rows)

SQLファイルからデータベースをインポート/復元するために何をすべきかわかりません。

45
Usman

バックアップの作成方法については言及しなかったため、一般的な答えは通常psqlツールを使用します。

ダンプするように指示されたpg_dumpに応じて、SQLファイルにはさまざまなSQLコマンドのセットを含めることができます。たとえば、pg_dump--cleanおよび--schema-onlyを使用してデータベースをダンプするように指示した場合、SQLコマンドがないため、そのダンプからデータベースを復元することはできません。テーブルの実際のデータをコピー(または--insertsが使用されている場合はINSERT)します。そのようなダンプにはDDL SQLコマンドのみが含まれ、実際のデータではなくスキーマを再作成できます。

典型的なSQLダンプはpsqlで復元されます:

psql (connection options here) database  < yourbackup.sql

または、psqlセッションから、

psql (connection options here) database
database=# \i /path/to/yourbackup.sql

pg_dump -Fc(「カスタム形式」)で作成されたバックアップの場合、これはプレーンSQLファイルではなく圧縮ファイルであるため、pg_restoreツールを使用する必要があります。

Unixライクに取り組んでいるなら、これを試してください:

man psql
man pg_dump
man pg_restore

それ以外の場合は、 htmlドキュメント をご覧ください。幸運を!

46
dschulz

pg_restoreコマンドを使用すると、postgresデータベースを復元できます

最初のオープンターミナルタイプ

Sudo su postgres

新しいデータベースを作成する

createdb [データベース名] -O [所有者]

createdb test_db [-O openerp]

pg_restore -d [データベース名] [ダンプファイルのパス]

pg_restore -d test_db /home/sagar/Download/sample_dbump

データベースの復元が完了するまで待ちます。

ダンプファイルには読み取り、書き込み、実行のアクセス権がある必要があるため、chmodコマンドを適用できることを忘れないでください

16
Sagar Pise

1。端末を開きます

2。次のコマンドでデータベースをバックアップします

あなたのpostgresビン-/opt/PostgreSQL/9.1/bin/

ソースデータベースサーバー-192.168.1.111

バックアップファイルの場所と名前-/home/dinesh/db/mydb.backup

ソースデータベース名-mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --Host '192.168.1.111' --port 5432 --username "postgres" --no-password --format custom --blobs --file "/ home/dinesh/db /mydb.backup "" mydatabase "

.mydb.backupファイルを宛先に復元します。

宛先サーバー-localhost

宛先データベース名-mydatabase

バックアップを復元するためのデータベースを作成します。

/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"

バックアップを復元します。

/opt/PostgreSQL/9.1/bin/pg_restore --Host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home/dinesh/db/mydb。バックアップ"

7
Dinesh-SriLanka

MartinPとuser664833からのアドバイスを組み合わせて、それを機能させることもできました。注意:Plugins ... PSQL Consoleを選択してpgAdmin GUIツールからpsqlを入力すると、psqlセッションの資格情報と権限レベルが設定されるため、テーブルに対する管理者またはCRUDの権限が必要になります。確かにそれを知っている)。 psqlコンソールでのコマンドは、次の形式を取ります。

postgres=# \i driveletter:/folder_path/backupfilename.backup

postgres =#はコマンドの一部ではなく、psqlプロンプトです。

.backupファイルには、テーブルの作成に使用されるコマンドが含まれます。そのため、実行されたがエラーとして報告された「ALTER TABLE ...」コマンドなども取得できます。復元を実行する前にこれらのコマンドをいつでも削除できると思いますが、データの復元が失敗する可能性が低いため、それらをそのままにしておくほうがおそらく安全です。ただし、再保存するデータが実際にそこに到達したことを必ず確認してください。 (これが誰かへの愛顧的なアドバイスのように思えるかもしれませんが、それは彼らがこのものにどれだけ長くいても誰にでも起こり得る見落としです-同僚からのちょっとした気晴らし、電話など、そしてそれは簡単です私は自分のキャリアの早い段階で他のデータベースを使用してそれを実行し、「このクエリからデータが表示されないのはなぜですか?」と疑問に思いました。存在しなかった可能性のあるバグの可能性を追い出すため)

5
Matt Campbell

Psql.exeは、少なくともウィンドウ(上記のように見えます)では、スラッシュの方向にかなりこだわりがあります。

以下に例を示します。コマンドウィンドウで:

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres
psql (9.2.4)
Type "help" for help.

postgres=# \i c:\temp\try1.sql    
c:: Permission denied
postgres=# \i c:/temp/try1.sql
CREATE TABLE
postgres=#

\i呼び出しで「通常の」ウィンドウスラッシュを使用すると、失敗することがわかります。ただし、bothスラッシュスタイルは、入力パラメータとしてpsql.exeに渡すと機能します。次に例を示します。

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:\TEMP\try1.sql
CREATE TABLE

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:/TEMP/try1.sql
CREATE TABLE

C:\Program Files\PostgreSQL\9.2\bin>
0
MartinP

スキーマの所有者がダンプを復元できるように、データベースレベルで権限を設定する必要がある場合があります。

0
Bill Rosmus