.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ファイルからデータベースをインポート/復元するために何をすべきかわかりません。
バックアップの作成方法については言及しなかったため、一般的な答えは通常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ドキュメント をご覧ください。幸運を!
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コマンドを適用できることを忘れないでください
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。バックアップ"
MartinPとuser664833からのアドバイスを組み合わせて、それを機能させることもできました。注意:Plugins ... PSQL Consoleを選択してpgAdmin GUIツールからpsqlを入力すると、psqlセッションの資格情報と権限レベルが設定されるため、テーブルに対する管理者またはCRUDの権限が必要になります。確かにそれを知っている)。 psqlコンソールでのコマンドは、次の形式を取ります。
postgres=# \i driveletter:/folder_path/backupfilename.backup
postgres =#はコマンドの一部ではなく、psqlプロンプトです。
.backupファイルには、テーブルの作成に使用されるコマンドが含まれます。そのため、実行されたがエラーとして報告された「ALTER TABLE ...」コマンドなども取得できます。復元を実行する前にこれらのコマンドをいつでも削除できると思いますが、データの復元が失敗する可能性が低いため、それらをそのままにしておくほうがおそらく安全です。ただし、再保存するデータが実際にそこに到達したことを必ず確認してください。 (これが誰かへの愛顧的なアドバイスのように思えるかもしれませんが、それは彼らがこのものにどれだけ長くいても誰にでも起こり得る見落としです-同僚からのちょっとした気晴らし、電話など、そしてそれは簡単です私は自分のキャリアの早い段階で他のデータベースを使用してそれを実行し、「このクエリからデータが表示されないのはなぜですか?」と疑問に思いました。存在しなかった可能性のあるバグの可能性を追い出すため)
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>
スキーマの所有者がダンプを復元できるように、データベースレベルで権限を設定する必要がある場合があります。