今天学习openGauss导出数据数据相关操作。 主要是用到gs_dump命令属于逻辑备份;
-f, –file=FILENAME:将输出发送至指定文件或目录
-F, –format=c|d|t|p:
p|plain:输出一个文本SQL脚本文件(默认)
c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs_restore输入信息。
d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。
t|tar:输出一个tar格式的归档形式,作为gs_restore输入信息。
-Z, –compress=0-9:指定使用的压缩比级别
-a, –data-only:只输出数据,不输出模式(数据定义)。转储表数据、大对象和序列值。
-E, –encoding=ENCODING:以指定的字符集编码创建转储
-n, –schema=SCHEMA:转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象,转储支持多个模式的转储。多次输入-n schemaname转储多个模式;
-s, –schema-only:只转储对象定义(模式),而非数据
-t, –table=TABLE:指定转储的表(或视图、或序列、或外表)对象列表
语法:
gs_dump [OPTION]... [DBNAME]
复制
“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 例如: 不需要-d,直接指定“dbname”。
两种方式指定要导出的数据库:
gs_dump -p port_number postgres -f dump1.sql
复制
或者
export PGDATABASE=postgres
复制
gs_dump -p port_number -f dump1.sql
复制
学习笔记:
- 导出数据库级别:
- sql文件格式全库信息:
gs_dump -f /home/omm/backup_database_all.sql [DBNAME] -F p
- 不包含数据库对象定义(参数 -a):gs_dump -f /home/omm/backup_database_data.sql
[DBNAME]
-a -F p - 只导出定义(参数 -s):gs_dump -f /home/omm/backup_database_define.sql
[DBNAME]
-s -F p
- 导出模式级别:
- 导出模式下所有信息:gs_dump -f /home/omm/backup_schema_all.sql
[DBNAME]
-n[schema]
-F p - 导出模式下数据:gs_dump -f /home/omm/backup_schema_data.sql
[DBNAME]
-n[schema]
-a -F p - 导出模式下定义:gs_dump -f /home/omm/backup_schema_define.sql
[DBNAME]
-n[schema]
-s -F p
- 表级别:
- 表所有数据:gs_dump -f /home/omm/backup_table_all.sql
[DBNAME]
-t[table]
-F p - 表下所有数据没定义:gs_dump -f /home/omm/backup_table_data.sql
[DBNAME]
-t[table]
-a -F p - 表定义:gs_dump -f /home/omm/backup_table_define.sql
[DBNAME]
-t[table]
-s -F p
课程练习
1.创建数据库tpcc,在数据库tpcc中创建模式schema1,在模式schema1中建表products
openGauss=# create database tpcc;
CREATE DATABASE
openGauss=# \c tpcc;
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "tpcc" as user "omm".
tpcc=# create schema schema1;
CREATE SCHEMA
tpcc=# create table schema1.products (id int,name char(30));
CREATE TABLE
tpcc=# insert into schema1.products values (1,'aa');
复制
2.使用gs_dump工具以文本格式导出数据库tpcc的全量数据
[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpcc.txt tpcc -F p
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: The total objects number is 391.
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: [100.00%] 391 objects have been dumped.
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: dump database tpcc successfully
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: total time: 1464 ms
[omm@node1 ~]$
复制
3.使用gs_dump工具以文本格式导出模式schema1的定义
[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpccschema1.sql tpcc -n schema1 -s -F p gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: The total objects number is 381. gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: [100.00%] 381 objects have been dumped. gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: dump database tpcc successfully gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: total time: 1008 ms [omm@node1 ~]$
复制
4.使用gs_dump工具以文本格式导出数据库tpcc的数据,不包含定义
[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpcc.txt tpcc -a -F p
gs_dump[port='26000'][tpcc][2021-12-15 22:03:37]: dump database tpcc successfully
gs_dump[port='26000'][tpcc][2021-12-15 22:03:37]: total time: 885 ms
[omm@node1 ~]$
复制
5.删除表、模式和数据库
openGauss=# \c tpcc
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "tpcc" as user "omm".
tpcc=# drop table schema1.products;
DROP TABLE
tpcc=# drop schema schema1;
DROP SCHEMA
tpcc=# \c postgres
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "omm".
openGauss=# drop database tpcc;
DROP DATABASE
openGauss=#
复制