55

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

ダンプを復元するためのシェルコマンドを使用してみましたが、それでも機能しませんでした。

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

編集

newTestDB に座っているときに、PostGres の Shell SQL ペインに次のコマンドを使用しました。

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

それでも同じエラーが発生しました(「許可が拒否されました」)。

アクセス許可を昇格させた後、PostgreSQL のデフォルト テーブルが表示されます。

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

(2 rows)

SQL ファイルからデータベースをインポート/復元する方法がわかりません。

4

7 に答える 7

56

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

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

典型的な 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 docsをご覧ください。幸運を!

于 2012-05-25T20:46:33.580 に答える
8

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 --blob --file "/home/dinesh/db /mydb.backup" "mydatabase"

3. 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.バックアップ"

于 2013-10-11T06:19:33.810 に答える
6

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

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

ここで、postgres=#は psql プロンプトであり、コマンドの一部ではありません。

.backup ファイルには、テーブルの作成に使用されるコマンドが含まれているため、実行されてもエラーとして報告されるファイル内の「ALTER TABLE ...」コマンドなども取得される場合があります。復元を実行する前にこれらのコマンドをいつでも削除できると思いますが、データの復元が失敗する可能性は低いため、それらをそのままにしておいて後悔するよりはおそらく安全です。ただし、復元したいデータが実際にそこにあることを常に確認してください。(これが誰にとっても恩着せがましいアドバイスのように思われる場合は申し訳ありませんが、これは、同僚や電話などからの一瞬の気晴らしや、この仕事にどれだけ長く携わっていても、誰にでも起こり得る見落としです.このステップは忘れてください。私はキャリアの早い段階で他のデータベースを使用して自分で行ったことがあります。

于 2014-03-10T15:53:12.273 に答える
0

psql.exe は、少なくとも Windows では (上記のように見えます)、スラッシュの方向に非常にうるさいことがわかりました。

これが例です。コマンド ウィンドウで:

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=#

呼び出しで「通常の」Windows スラッシュを使用すると失敗することがわかります\i。ただし、入力パラメーターとして に渡すと、両方の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>
于 2013-05-14T18:10:14.060 に答える
0

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

于 2012-07-29T22:21:18.743 に答える