PostgreSQL:转储和恢复

vc6uscn9  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(6)|浏览(141)

我使用EMS SQL Manager for PostgreSQL,我需要转储困难的数据库(域,300多个存储过程/函数,触发器,数据等)。这个工具不能做到这一点。
请告诉我好的GUI工具的postgres。

s5a0g9ez

s5a0g9ez1#

您可以始终使用命令行实用程序。
转储群集:

pg_dumpall -p 5432 > /path/to/my/dump_file.sql

字符串
转储单个数据库:

pg_dump -p 5432 mydb > /path/to/my/mydb_dump.sql


仅转储架构:

pg_dump -p 5432 mydb -s > /path/to/my/mydb_dump_schema.sql


More in the manual.
如果你想恢复到一个空的数据库,你可能需要在恢复之前运行 *:

DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;


在这种情况下,不需要pg_dump--clean选项。

tyg4sfes

tyg4sfes2#

备份您的数据库没有工具需要.我们可以做与终端
所有命令都应该以postgres用户身份运行。

sudo su - postgres

字符串
备份单个数据库

pg_dump db_name > db_backup.sql


恢复单个数据库

psql db_name < db_backup.sql


备份整个postgres数据库集群

pg_dumpall > cluster_backup.sql


恢复整个postgres数据库集群

psql -f cluster_backup.sql postgres


参考此源代码以获取更多命令backup commands

mbskvtky

mbskvtky3#

pgAdmin3将做的伎俩,它有pg_dump和pg_restore包括在安装程序中。

z5btuh9x

z5btuh9x4#

如果您使用md5身份验证技术,并希望使用特定用户来获取数据库转储,则可以

$ pg_dump -U username -p 5432 dbname > filename-to-backup-to.sql

字符串
要避免还原时的凭据和用户名问题,可以使用--no-owner标志

$ pg_dump --no-owner -U username -p 5432 dbname > filename-to-backup-to.sql


要恢复备份,请使用以下命令

$ psql -U username -d dbname -f filename-to-backup-to.sql

8dtrkrch

8dtrkrch5#

pg_dump -您可以使用modaltranss_dev > backup.sql

aor9mmx1

aor9mmx16#

例如,您可以使用pg_dumpall将所有数据库、用户(角色)等导出到backup.sql,如下所示。* 如果backup.sql不存在,则会创建backup.sql,您最好使用任何超级用户(例如,postgres)这样做顺利,没有权限错误和pg_dumpall可以输出SQL在只有纯文本格式,而不是自定义格式或焦油格式和我的答案解释了如何使用pg_dump导出模式和数据,文档解释了如何使用pg_dumpall导出和导入所有内容:

pg_dumpall -U postgres > backup.sql

字符串
或者:

pg_dumpall -U postgres -f backup.sql


或者,您可以将所有数据库中除数据以外的所有数据导出到backup.sql,如下所示:

pg_dumpall -U postgres -s > backup.sql


或者:

pg_dumpall -U postgres --schema-only > backup.sql


或者,您可以仅使用INSERT语句将所有数据库的模式以外的所有内容导出到backup.sql,该语句的列名如下所示:

pg_dumpall -U postgres -a --column-inserts > backup.sql


或者:

pg_dumpall -U postgres --data-only --column-inserts > backup.sql


然后,您需要在运行上面的命令后输入多个密码:

Password: 
Password: 
Password:
...


然后,您可以将backup.sql(所有内容)导入到PostgreSQL中,如下所示。

psql -U postgres -f backup.sql


或者,你可以尝试下面这在Windows上不起作用:

psql -U postgres < backup.sql


或者,您可以在使用用户(角色)postgres登录后使用\ibackup.sql(所有内容)导入到PostgreSQL中,如下所示:

psql -U postgres
postgres=# \i backup.sql


或者,您可以将backup.sql逐个导入多个数据库,如下所示。* 您必须创建每个数据库(以及仅导入数据的架构)之前手,否则有错误,我的答案解释了如何创建一个数据库,你必须使用psql导入SQL在纯文本格式,而不是pg_restore可以导入SQL在自定义格式或焦油格式和我的答案说明如何将backup.sql导入orange数据库:

psql -U postgres -f backup.sql orange
psql -U postgres -f backup.sql lemon
psql -U postgres -f backup.sql peach
...


此外,您可以将密码(例如,banana)设置为PGPASSWORD,将所有数据库导出到backup.sql,而无需多次提示密码,如下所示:

PGPASSWORD=banana pg_dumpall -U postgres > backup.sql


并且,您可以将除orange*apple*数据库之外的所有数据库导出到backup.sql,如下所示。* 一个命令中可使用多个--exclude-database

pg_dumpall -U postgres --exclude-database=orange --exclude-database=*apple* > backup.sql


或者:

pg_dumpall -U postgres --exclude-database orange --exclude-database *apple* > backup.sql

相关问题