目录
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=NAME | connect as specified database user | 以指定的数据库用户身份连接,不再需要su – postgres |
-d, --dbname=DBNAME | database to dump | 指定连接的数据库名,默认连接postgres |
通用选项: | ||
-f, --file=FILENAME | output file or directory name | 转储输出的文件名 |
-?, --help | show this help, then exit | 显示帮助 |
控制输出内容选项: | ||
-c, --clean | clean (drop) database objects before recreating | 在重新创建之前清理(删除)数据库对象;如果不使用该参数,还原时将不会清理(删除)对象,可能会造成重复添加数据的问题,典型的情况是会出现多条一模一样的数据 |
-C, --create | include commands to create database in dump | 在转储文件中添加创建数据库语句,还原时如果存在目标数据库,会报个无法创建的错误,还原时如果不存在目标数据库,则会自动创建目标数据库;常用于将转储文件还原到不存在“备份目标数据库名”的数据库中 |
-s, --schema-only | dump only the schema, no data | 只转储数据库结构,不转储数据 |
-a, --data-only | dump only the data, not the schema | 只转储数据,不转储模式 |
-t, --table=TABLE | dump the named table(s) only | 只转储指定表;一个-t选项只能指定一个表,如果需要排除多个表,需要每个表都使用-t标识 |
-T, --exclude-table=TABLE | do NOT dump the named table(s) | 指定不转储的表;一个-T选项只能指定一个表,如果需要排除多个表,需要每个表都使用-T标识 |
--if-exists | use IF EXISTS when dropping objects | 使用IF EXISTS来删除已有对象;如果不使用该选项,还原数据时如果不存在对象,删除时会报错 |
--inserts | dump 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=PORT | database server port (default: "5432") | 数据库服务器端口号 |
-U, --username=NAME | database user name (default: "root") | 以指定的数据库用户身份连接,不再需要su – postgres |
通用选项: | ||
-d, --dbname=DBNAME | database name to connect to (default: "root") | 指定连接的数据库名,默认连接postgres |
-f, --file=FILENAME | execute commands from file, then exit | 指定需要指定的文件 |
(3)例子:
直接指定需要运行的sql文件即可。
psql -h 127.0.0.1 -p 5432 -U postgres -d pigoss_toc -f ./backup.sql
键入密码,回车,则开始还原备份文件。