目录

1 PostgreSQL备份

(1)备份命令:

(2)备份参数说明:

(3)例子:

a)导出数据库结构及数据

b)只导出指定数据库的表结构,不含数据

c)只导出指定数据库的数据,不含表结构

d)只导出指定数据库的所有数据,但排除某些(某个)表

e)只导出指定数据库的某些(某个)表的数据,其他表全部排除

2 PostgreSQL还原

(1)还原命令:此处使用psql直接运行sql文件方式

(2)还原参数说明

(3)例子:


1 PostgreSQL备份

(1)备份命令:

pg_dump [OPTION]... [DBNAME] 

(2)备份参数说明:

连接选项:
-h, --host=HOSTNAME database server host or socket directory数据库服务器主机或套接字目录
-p, --port=PORT database server port number数据库服务器端口号
-U, --username=NAMEconnect as specified database user以指定的数据库用户身份连接,不再需要su – postgres
-d, --dbname=DBNAMEdatabase to dump 指定连接的数据库名,默认连接postgres
通用选项:
-f, --file=FILENAMEoutput file or directory name转储输出的文件名
-?, --helpshow this help, then exit显示帮助
控制输出内容选项:
-c, --cleanclean (drop) database objects before recreating在重新创建之前清理(删除)数据库对象;如果不使用该参数,还原时将不会清理(删除)对象,可能会造成重复添加数据的问题,典型的情况是会出现多条一模一样的数据
-C, --createinclude commands to create database in dump在转储文件中添加创建数据库语句,还原时如果存在目标数据库,会报个无法创建的错误,还原时如果不存在目标数据库,则会自动创建目标数据库;常用于将转储文件还原到不存在“备份目标数据库名”的数据库中
-s, --schema-onlydump only the schema, no data只转储数据库结构,不转储数据
-a, --data-onlydump only the data, not the schema只转储数据,不转储模式
-t, --table=TABLEdump the named table(s) only只转储指定表;一个-t选项只能指定一个表,如果需要排除多个表,需要每个表都使用-t标识
-T, --exclude-table=TABLE do NOT dump the named table(s)指定不转储的表;一个-T选项只能指定一个表,如果需要排除多个表,需要每个表都使用-T标识
--if-existsuse IF EXISTS when dropping objects使用IF EXISTS来删除已有对象;如果不使用该选项,还原数据时如果不存在对象,删除时会报错
--insertsdump data as INSERT commands, rather than COPY将数据转储为插入命令(标准的insert语句),而不是复制命令;使用该选项后,转储的sql可读性强,便于编辑

(3)例子:

a)导出数据库结构及数据

./pg_dump -h 127.0.0.1 -p 5432 -U postgres -d pigoss_toc --insert --if-exists -c -f ./backup.sql

备份pigoss_toc数据库,将数据转存为插入命令,并且使用IF EXISTS来删除已有对象,在重新创建之前删除数据库对像,将备份的数据存入backup.sql文件中。

生成备份的sql文件 backup.sql

b)只导出指定数据库的表结构,不含数据

./pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 数据库名 --insert --if-exists -c -s -f ./文件名.sql

c)只导出指定数据库的数据,不含表结构

./pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 数据库名 --insert -a -f ./文件名.sql

d)只导出指定数据库的所有数据,但排除某些(某个)表

不含表结构(一个“-T”参数只能排除一个表,如果要排除多个表需要使用多个“-T”参数)

./pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 数据库名 –insert -a -T 表名 -f ./文件名.sql

e)只导出指定数据库的某些(某个)表的数据,其他表全部排除

不含表结构(指定导出多张表需要使用多个“-t”参数)

./pg_dump -h 127.0.0.1 -p 5432 -U postgres -d 数据库名 –insert -a -t 表名 -f ./文件名.sql

2 PostgreSQL还原

(1)还原命令:此处使用psql直接运行sql文件方式

psql [OPTION]... [DBNAME [USERNAME]]

(2)还原参数说明

连接选项:

-h, --host=HOSTNAME database server host or socket directory (default: "local socket") 数据库服务器主机或套接字目录
-p, --port=PORTdatabase server port (default: "5432") 数据库服务器端口号
-U, --username=NAMEdatabase user name (default: "root")以指定的数据库用户身份连接,不再需要su – postgres
通用选项:
-d, --dbname=DBNAMEdatabase name to connect to (default: "root") 指定连接的数据库名,默认连接postgres
-f, --file=FILENAMEexecute commands from file, then exit指定需要指定的文件

(3)例子:

直接指定需要运行的sql文件即可。

psql -h 127.0.0.1 -p 5432 -U postgres -d pigoss_toc -f ./backup.sql

 键入密码,回车,则开始还原备份文件。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐