我是postgresql的新手,在本地,我使用的是pgadmin3。然而,在远程服务器上,我没有这么奢侈。
我已经创建了数据库的备份并将其复制了,但是,有没有办法从命令行恢复备份?我只看到与GUI或pg_dumps相关的内容,所以,如果有人能告诉我如何解决这个问题,那就太棒了!
答案 0 :(得分:257)
有两种工具可供查看,具体取决于您创建转储文件的方式。
您的第一个引用来源应该是手册页pg_dump(1)
,因为这就是创建转储本身的原因。它说:
转储可以用脚本或输出 存档文件格式。脚本转储是 包含SQL的纯文本文件 重建所需的命令 数据库到了它的状态 在它被保存的时候。至 从这样的脚本恢复,将其提供给 psql的(1)。可以使用脚本文件 甚至重建数据库 在其他机器和其他机器上 架构;经过一些修改 甚至在其他SQL数据库产品上也是如此。
备用存档文件格式 必须与pg_restore(1)一起使用 重建数据库。他们允许 pg_restore要选择什么 恢复,甚至重新排序 恢复之前的项目。该 存档文件格式旨在 可跨机构移植。
所以取决于它被淘汰的方式。你可以使用优秀的file(1)
命令来解决它 - 如果它提到了ASCII文本和/或SQL,它应该用psql
恢复,否则你应该使用pg_restore
恢复非常简单:
psql -U <username> -d <dbname> -1 -f <filename>.sql
或
pg_restore -U <username> -d <dbname> -1 <filename>.dump
查看各自的联机帮助页 - 有很多选项会影响还原的工作方式。在恢复之前,您可能必须清理“实时”数据库或从template0重新创建它们(如注释中所指出的那样),具体取决于转储的生成方式。
答案 1 :(得分:146)
创建备份
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F c是自定义格式(压缩,并且能够与-j N并行执行)-b包括blob,-v是详细的,-f是备份文件名
从备份恢复
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
设置 -h localhost 非常重要 - 选项
答案 2 :(得分:64)
您可能需要以postgres
身份登录才能拥有数据库的完全权限。
su - postgres
psql -l # will list all databases on Postgres cluster
<强>的pg_dump / pg_restore的强>
pg_dump -U username -f backup.dump database_name -Fc
switch -F
指定备份文件的格式:
c
将使用自定义的PostgreSQL格式,该格式经过压缩并产生最小的备份文件大小d
表示每个文件是一个表的目录t
用于TAR存档(大于自定义格式)-h
/ --host
指定运行服务器的计算机的主机名-W
/ --password
强制pg_dump
在连接数据库之前提示输入密码恢复备份:
pg_restore -d database_name -U username -C backup.dump
参数-C
应在导入数据之前创建数据库。如果它不起作用,您可以随时创建数据库,例如。 with command(作为用户postgres
或其他有权创建数据库的帐户)createdb db_name -O owner
<强>的pg_dump / PSQL 强>
如果您未指定参数-F
,则使用默认纯文本SQL格式(或使用-F p
)。然后你不能使用pg_restore
。您可以使用psql
导入数据。
备份:
pg_dump -U username -f backup.sql database_name
恢复:
psql -d database_name -f backup.sql
答案 3 :(得分:44)
POSTGRESQL 9.1.12
DUMP:
pg_dump -U user db_name > archive_name.sql
输入用户密码并按Enter键。
RESTORE:
psql -U user db_name < /directory/archive.sql
输入用户密码并按Enter键。
答案 4 :(得分:27)
以下是我用于恢复数据库的pg_dump
版本:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
或使用psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
其中-h
主机,-p
端口,-u
登录用户名,-d
数据库名称
答案 5 :(得分:12)
使用GZIP备份和恢复
对于较大尺寸的数据库,这是非常好的
备份
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
resore
gunzip -c mydb.pgsql.gz | psql dbname -U user
答案 6 :(得分:8)
Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
答案 7 :(得分:6)
1.打开终端。
2.使用以下命令
备份数据库你的postgres bin - /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“
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.backup“
答案 8 :(得分:4)
我在这里没有看到有关转储文件扩展名(* .dump)的提及。
此解决方案对我有用:
我有一个转储文件,需要恢复它。
首先,我尝试使用pg_restore
进行此操作并得到:
pg_restore: error: input file appears to be a text format dump. Please use psql.
我用psql
做到了,并且运行良好:
psql -U myUser-d myDataBase < path_to_the_file/file.dump
答案 9 :(得分:3)
如果使用pg_dump创建备份,则可以通过以下方式轻松恢复:
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
答案 10 :(得分:3)
尝试:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
答案 11 :(得分:2)
尝试查看以下命令是否可以帮助您:
sudo su - yourdbuser
psql
\i yourbackupfile
答案 12 :(得分:2)
这是我用来备份,删除,创建和还原我的数据库(在macOS和Linux上)的组合:
sudo -u postgres pg_dump -Fc mydb > ./mydb.sql
sudo -u postgres dropdb mydb
sudo -u postgres createdb -O db_user mydb
sudo -u postgres pg_restore -d mydb < ./mydb.sql
-Fc
将压缩数据库(format custom)sudo -u postgres psql -c "\du+"
./mydb.sql
,然后通过以下方法进行更改:
./`hostname`_mydb_`date +"%Y%m%d_%H%M"`.sql
答案 13 :(得分:2)
很抱歉,您的死灵书对我来说不起作用。我正在使用postgres10。在Linux上:
service postgresql-10 restart
将目录更改到我的backup.sql所在的位置并执行:
psql postgres -d database_name -1 -f backup.sql
-database_name是我的数据库的名称
-backup.sql是我的.sql备份文件的名称。
答案 14 :(得分:2)
这对我有用:
pg_restore --verbose --clean --no-acl --no-owner --host = localhost -dbname = db_name --username = username Latest.dump
答案 15 :(得分:2)
尝试一下:
psql -U <username> -d <dbname> -f <filename>.sql
从.sql文件还原DB psql
答案 16 :(得分:2)
如下所示,您可以使用psql命令恢复转储文件:
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
如果您需要设置用户名,只需在命令后添加用户名,如:
psql dbname < infile username
答案 17 :(得分:1)
1)打开psql终端。
2)解压/解压转储文件。
3)创建一个空数据库。
4)使用以下命令还原.dump文件
<database_name>-# \i <path_to_.dump_file>
答案 18 :(得分:1)
如果您有备份SQL文件,则可以轻松地将其还原。 只需按照下面的指示进行操作
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
根据需要输入您的postgres用户的密码,然后让Postgres进行操作。然后,您可以检查还原过程。
答案 19 :(得分:1)
恢复postgres备份文件取决于您首先如何进行备份。
如果你使用pg_dump和-F c或-F d你需要使用pg_restore,否则你可以使用
psql -h localhost -p 5432 -U postgres&lt; backupfile
答案 20 :(得分:0)
如果要备份数据或从备份还原数据,可以运行以下命令:
1要创建数据备份,请转到C:\programfiles\postgres\10\bin\
之类的postgres \ bin \目录,然后键入以下命令-
pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
2要从备份恢复数据,请转到C:\programfiles\postgres\10\bin\
之类的postgres \ bin \目录,然后在命令下方键入-C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
请确保备份文件存在。
答案 21 :(得分:0)
我在运行pg_dump时遇到身份验证问题,所以我移动了转储文件
mv database_dump /tmp
进入temp目录然后运行
su -u postgres
cd /tmp
pg_restore database_dump
如果您有一个大型数据库转储,您可能只想创建另一个目录,当前用户和postgres用户可以访问该目录并将数据库转储文件放入该目录。
答案 22 :(得分:0)
Backup ==>
选项1:与cmd中的密码一起备份
1.PGPASSWORD="mypassword" pg_dump -U postgres -h localhost --inserts mydb>mydb.sql
选项2:在cmd中无需密码即可进行备份
2. pg_dump -U postgres -h localhost --inserts mydb>mydb.sql
选项3:以gzip格式进行备份(如果数据库很大)
3. pg_dump -U postgres -h localhost mydb --inserts | gzip > mydb.gz
还原:
1. psql -h localhost -d mydb -U postgres -p 5432 < mydb.sql
答案 23 :(得分:0)
首先,确保您已经将 postgres bin 文件夹添加到“Path”环境变量中(在我的例子中,这个文件夹是 C:\Program Files\PostgreSQL\12\bin)。
然后,打开 Windows 命令解释器 (cmd),进入 .sql 文件所在的文件夹并执行以下命令:
pg_restore -U 用户名 -d database-1 备份文件.sql
例如:
pg_restore -U sam -d SamDataBase -1 SamDataBaseBackup.sql
(它会要求你输入用户的密码,所以请确保输入正确,然后点击回车)
纯粹的生活!
答案 24 :(得分:-1)
请遵循以下三个步骤:
- 启动postgres服务器-
sudo systemctl start postgresql
- 启用相同-
sudo systemctl enable postgresql
- 还原命令-
pg_restore -h localhost -p 5432 -U postgres -d old_db
假定转储在同一目录中
链接:
https://www.postgresqltutorial.com/postgresql-restore-database https://askubuntu.com/questions/50621/cannot-connect-to-postgresql-on-port-5432
答案 25 :(得分:-3)
见下面的例子
C:/ Program Files / PostgreSQL / 9.4 / bin \ pg_restore.exe --host localhost --port 5432 --username&#34; postgres&#34; --dbname&#34; newDatabase&#34; --no-password --verbose
&#34; C:\ Users \ Yogesh \ Downloads \ new Download \ DB.backup &#34;