English 中文(简体)
如何将 PostgreSQL 倾弃文件恢复到 Postgres 数据库?
原标题:How to restore PostgreSQL dump file into Postgres databases?

我有一个有 .SQL 扩展名的倾弃文件( 事实上, 它是一个纯文本 SQL 文件) 。 我想将它恢复到我创建的数据库中。 我正使用 < a href=" http://www. pgadmin.org/ " rel= " noreferrer" > pgAdmin III , 当我使用它的“ Restore 向导” 时, 它不会突出按钮“ Restore ” 。 相反, 它期待有 < code>. backup 文件扩展 。

我试着用炮弹来修复垃圾场,但还是行不通。

我是新来的,如果有人能帮我,我有义务

Edit

我坐在新塔里塔数据库时 遵循了对PostGres的壳牌SQL板的指令

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

但它还是犯了同样的错误(“Permission remissioned”) 。

提升权限后, 它只是给我展示了 PostgreSQL 的默认表格 :

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

(2 rows)

我不知道如何从 SQL 文件导入/ 存储数据库 。

问题回答

您没有提及如何提供备份, 所以通用答案是 : Usually with psql 工具。

Depending on what pg_dump was instructed to dump, the SQL file can have different sets of SQL commands. For example, if you instruct pg_dump to dump a database using --clean and --schema-only, you can t expect to be able to restore the database from that dump as there will be no SQL commands for COPYing (or INSERTing if --inserts is used ) the actual data in the tables. A dump like that will contain only DDL SQL commands, and will be able to recreate the schema but not the actual data.

典型的 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 工具。

如果你在做类似顺ix的工作, 试试这个:

man psql
man pg_dump
man pg_restore

否则,请查看"https://www.postagresql.org/docs/current/backup.html" rel=“不跟随 nofollow noreferrer">html docs 。祝你好运!

使用 < 坚固> pg_ restore 命令, 您可以恢复后gres 数据库

第一个打开终端类型

sudo su postgres

创建新数据库

<% 1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

createdb test_db [-O openerp]

< 加固> pg_restore -d [数据库名称] [倾弃文件的路径]

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

等待数据库恢复完成。

< strong> 记住, 倾卸文件应该读、 写、 执行访问权限, 这样您就可以应用 chmod 命令

您试图跳过 psql 命令行的问题是斜线的方向:

newTestDB-# /i E:db-rbl-restore-20120511_Dump-20120514.sql   # incorrect
newTestDB-# i E:/db-rbl-restore-20120511_Dump-20120514.sql   # correct

需要澄清的是, psql 命令以反斜线开始,所以你本应该将 > i 命令置于倒斜线之下。由于您的打字,结果是 psql 忽略了所有事情,直到找到第一个 , 之后又出现了 db ,而 db 恰好是列出 psql 命令,列出 able space ,因此输出是表格 < /em> 的 List. > 。 它没有列出您所说的“ PostgreSQL 的默认表格”。

此外,似乎 psql 期望 firmpath 参数使用远距斜线来划定目录,而不管是否使用操作系统(Windows对 Windows的评论是反直觉的)。

值得指出的是,你试图“提高许可”与你试图执行的命令结果无关。此外,你没有说导致所谓的“拒绝许可”错误的原因。

最后, 倾弃文件的扩展并不重要, 事实上您甚至不需要扩展 。 事实上, < code> pgAdmin 在选择备份文件名时建议了 < code>. backpup 扩展名, 但您可以再次实际做任何您想要的扩展名, 包括完全没有扩展名。 问题是 < code> pgAdmin 似乎只允许“ 海关或焦油” 或“ 董事” 倾弃的“ Restore” (至少MAC OS X版本的应用程序就是这种情况), 所以只要使用上面显示的 < code>psql/code > < i/code> 命令 。

  1. 打开终端。

  2. 以下列命令备份数据库 :

您的postagres bin - /opt/PostgreSQL/9.1/bin/

您的源数据库服务器 - 192168.1.111

您的备份文件位置和名称 - /home/dinesh/db/mydb. backup

您的源 Db 名称 - my database

/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"
  1. restore mydb.backup file into destination.

您的目标服务器 - 当地主机

您的目标数据库名称 - mydatabase

  1. create database for restore the backup.

/opt/PostgreSQL/9.1/bin/psql -h 本地主机 - p 5432 - U 后gres - c "CREATE DATABASE my database my database"

  1. restore the backup
/opt/PostgreSQL/9.1/bin/pg_restore --host  localhost  --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/home/dinesh/db/mydb.backup"

结合 MartinP 和 user664833 的建议, 我也能让它工作。 Caveat 是, 通过选择插件从 pgAdmin GUI 工具输入 psql psql... PSQL Console 来设置 psql 会话的证书和权限级别, 所以您必须拥有 admin 或 CRUD 权限, 也可以在 DB 上进行管理( 无法确定这一点 ) 。 在 psql 控制台中, 此命令会采取这个形式 :

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

此处的 < em> posgres @ / em> 是 psql 提示, 不是命令的一部分 。

. 备份文件将包含用于创建表格的命令, 这样您也可以在文件中获得“ ALTER Table ” 命令, 这些命令被执行过, 但被报告为错误 。 我想您可以在运行恢复之前总是删除这些命令, 但是您可能比在保存这些命令时要安全一些, 因为这些命令不会导致数据恢复失败。 但总是要检查以确保您想要恢复的数据实际上已经到达那里 。 ( 如果这看起来像是给任何人提供建议, 但是它是一种监督, 任何人都可能发生这种情况, 不管他们在这事情上待了多久 -- 从同事那里分心的那一刻, 一个电话等等, 并且很容易忘记这一步。 我早些的时候就使用其他数据库做了这个步骤, 并且想 ”Gee, 为什么我没有从这个查询中看到任何数据回来呢? 答案是数据从未真正恢复到, 我浪费了两个小时试图追踪可能不存在的错误。”)

这是在恢复 Windows 中的 Postgres 数据库时对我起作用的。 首先, 右键单击命令 shell 并选择“ 以管理员身份运行 ” 以避免被拒绝的许可问题。 执行相同的命令, 但要做一些修改 :

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

如果您注意到, “新测试DB-# i: db-rb- restore- e: idb- rbl- restore- 20120511_ dump- 20120514. sql” 命令已被改为“ 新测试DB- # i: i: / db- rbl- restore- 20120511_ dump- 20120514. sql ”, 文件路径中使用 / 而不是斜线 。

您可能需要在数据库级别上设置允许权限, 以便您的 schema 拥有者能够恢复倾弃 。

我发现psql.exe对斜线方向相当挑剔,

这里举一个例子。在一个 cmd 窗口中 :

C:Program FilesPostgreSQL9.2in>psql.exe -U postgres
psql (9.2.4)
Type "help" for help.

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

You can see it fails when I use "normal" windows slashes in a i call. However both slash styles work if you pass them as input params to psql.exe, for example:

C:Program FilesPostgreSQL9.2in>psql.exe -U postgres -f c:TEMP	ry1.sql
CREATE TABLE

C:Program FilesPostgreSQL9.2in>psql.exe -U postgres -f c:/TEMP/try1.sql
CREATE TABLE

C:Program FilesPostgreSQL9.2in>




相关问题
摘录数据

我如何将Excel板的数据输入我的Django应用? I m将PosgreSQL数据库作为数据库。

Postgres dump of only parts of tables for a dev snapshot

On production our database is a few hundred gigabytes in size. For development and testing, we need to create snapshots of this database that are functionally equivalent, but which are only 10 or 20 ...

How to join attributes in sql select statement?

I want to join few attributes in select statement as one for example select id, (name + + surname + + age) as info from users this doesn t work, how to do it? I m using postgreSQL.

What text encoding to use?

I need to setup my PostgreSQL DB s text encoding to handle non-American English characters that you d find showing up in languages such as German, Spanish, and French. What character encoding should ...

SQL LIKE condition to check for integer?

I am using a set of SQL LIKE conditions to go through the alphabet and list all items beginning with the appropriate letter, e.g. to get all books where the title starts with the letter "A": SELECT * ...