示例
示例:Remote模式导出
规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导出数据文件格式为CSV,所以规划的并行导出模式为Remote模式。
Remote模式并行导出数据操作示例如下所示:
- 以root用户登录GDS数据服务器,创建数据文件存放目录“/output_data”,启动gds_user用户及所属的用户组。
mkdir -p /output_data
- (可选)创建用户及其所属的用户组。此用户用于启动GDS。若该类用户及所属用户组已存在,可跳过此步骤。
groupadd gdsgrp useradd -g gdsgrp gds_user
- 修改数据服务器上数据文件目录“/output_data”的属主为gds_user。
chown -R gds_user:gdsgrp /output_data
- 以gds_user用户登录数据服务器上分别启动GDS。
其中GDS安装路径为“/opt/bin/gds”,导出数据文件存放在“/output_data/”目录下,数据服务器所在IP为192.168.0.90,GDS监听端口为5000,以后台方式运行。/opt/bin/gds/gds -d /output_data -p 192.168.0.90:5000 -H 10.10.0.1/24 -D
- 在数据库中创建外表foreign_tpcds_reasons用于接收数据服务器上的数据。
其中设置的导出模式信息如下所示:
- 由于启动GDS时,设置的导出数据文件存放目录为“/output_data/”,GDS监听端口为5000。创建的导出数据文件存放目录为“/output_data/”。所以设置参数“location”为“gsfs://192.168.0.90:5000/”。
设置导出的数据文件格式信息如下所示:
- 数据文件格式(format)为CSV。
- 编码格式(encoding)为UTF-8。
- 字段分隔符(delimiter)为E'\x08'。
- 引号字符(quote)为0x1b。
- 数据文件中空值(null)为没有引号的空字符串。
- 逃逸字符(escape)为默认值双引号。
- 数据文件是否包含标题行(header)为默认值false,即导出时数据文件第一行被识别为数据。
根据以上信息,创建的外表如下所示:
1 2 3 4 5 6
CREATE FOREIGN TABLE foreign_tpcds_reasons ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://192.168.0.90:5000/', FORMAT 'CSV',ENCODING 'utf8',DELIMITER E'\x08', QUOTE E'\x1b', NULL '') WRITE ONLY;
- 在数据库上,通过外表foreign_tpcds_reasons,将数据导出到数据文件中。
1
INSERT INTO foreign_tpcds_reasons SELECT * FROM reasons;
- 待数据导出完成后,以gds_user用户登录数据服务器,停止GDS。
其中GDS进程号为128954。ps -ef|grep gds gds_user 128954 1 0 15:03 ? 00:00:00 gds -d /output_data -p 192.168.0.90:5000 -D gds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds kill -9 128954
示例:多线程导出
规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导出的数据文件格式为CSV,同时导出2个目标表,所以规划使用Remote模式进行多线程导处。
Remote模式多线程导出数据操作示例如下所示:
- 以root用户登录GDS数据服务器,创建导出数据文件存放目录“/output_data”,数据库用户及所属的用户组。
mkdir -p /output_data groupadd gdsgrp useradd -g gdsgrp gds_user
- 修改数据服务器上数据文件目录“/output_data”的属主为gds_user。
chown -R gds_user:gdsgrp /output_data
- 以gds_user用户登录数据服务器上启动GDS。
其中GDS安装路径为“/opt/bin/gds”,导出数据文件存放在“/output_data/”目录下,数据服务器所在IP为192.168.0.90,GDS监听端口为5000,以后台方式运行,设定并发度为2。/opt/bin/gds/gds -d /output_data -p 192.168.0.90:5000 -H 10.10.0.1/24 -D -t 2
- 在GaussDB 200上,创建外表foreign_tpcds_reasons1和foreign_tpcds_reasons2用于接收数据服务器上的数据。
- 其中设置的导出模式信息如下所示:
- 由于启动GDS时,设置的导出数据文件存放目录为“/output_data/”,GDS监听端口为5000。创建的导出数据文件存放目录为“/output_data/”。所以设置参数“location”为“gsfs://192.168.0.90:5000/”。
- 设置导出的数据文件格式信息如下所示:
- 数据文件格式(format)为CSV。
- 编码格式(encoding)为UTF-8。
- 字段分隔符(delimiter)为E'\x08'。
- 引号字符(quote)为0x1b。
- 数据文件中空值(null)为没有引号的空字符串。
- 逃逸字符(escape)为默认值双引号。
- 数据文件是否包含标题行(header)为默认值false,即导出时数据文件第一行被识别为数据。
根据以上信息,创建的外表foreign_tpcds_reasons1如下所示:
1 2 3 4 5 6
CREATE FOREIGN TABLE foreign_tpcds_reasons1 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://192.168.0.90:5000/', FORMAT 'CSV',ENCODING 'utf8', DELIMITER E'\x08', QUOTE E'\x1b', NULL '') WRITE ONLY;
参考以上设置,创建的外表foreign_tpcds_reasons2如下所示:
1 2 3 4 5 6
CREATE FOREIGN TABLE foreign_tpcds_reasons2 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://192.168.0.90:5000/', FORMAT 'CSV', DELIMITER E'\x08', QUOTE E'\x1b', NULL '') WRITE ONLY;
- 在数据库中通过外表foreign_tpcds_reasons1和foreign_tpcds_reasons2,将表reasons1和reasons2中的数据导出到目录“/output_data”中。
1
INSERT INTO foreign_tpcds_reasons1 SELECT * FROM reasons1;
1
INSERT INTO foreign_tpcds_reasons2 SELECT * FROM reasons2;
- 待数据导出完成后,以gds_user用户登录数据服务器,停止GDS。
其中GDS进程号为128954。ps -ef|grep gds gds_user 128954 1 0 15:03 ? 00:00:00 gds -d /output_data -p 192.168.0.90:5000 -D -t 2 gds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds kill -9 128954
示例:Local模式导出
集群总共有8个DN,其中每2个DN位于同一个物理节点上,共有4个物理节点,且磁盘空间足够且集群节点IO性能好,所以选择的并行导出模式为local模式。
Local模式导出数据操作示例如下所示:
- 以root用户登录集群的每个物理节点,创建导出数据文件存放目录“/output_data”,并修改数据文件目录“/output_data”的属主为omm。以下以IP为192.168.0.11的节点为例,进行操作。
mkdir -p /output_data chown -R omm:wheel /output_data
- 在数据库上创建外表foreign_tpcds_reasons,用于导出数据。
- 其中设置的导出模式信息如下所示:
- 由于上一步中创建的导出数据文件存放目录为“/output_data/”。所以设置参数“location”为“file:///output_data/”。
- 设置导出的数据文件格式信息如下所示:
- 数据文件格式(format)为CSV。
- 编码格式(encoding)为UTF-8。
- 字段分隔符(delimiter)为E'\x08'。
- 引号字符(quote)为0x1b。
- 数据文件中空值(null)为没有引号的空字符串。
- 逃逸字符(escape)为默认值双引号。
- 数据文件是否包含标题行(header)为默认值false,即导出时数据文件第一行被识别为数据。
根据以上信息,创建的外表foreign_tpcds_reasons如下所示:
1 2 3 4 5 6
CREATE FOREIGN TABLE foreign_tpcds_reasons ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) SERVER gsmpp_server OPTIONS (LOCATION 'file:///output_data/', FORMAT 'CSV',ENCODING 'utf8', DELIMITER E'\x08', QUOTE E'\x1b', NULL '') WRITE ONLY;
- 在数据库中执行数据导出。
1
INSERT INTO foreign_tpcds_reasons SELECT * FROM reasons;
- 查看导出的数据文件。
数据文件将生成在集群各节点的“/output_data/YYYYMMDD/DN实例名”目录下。其中,“YYYYMMDD”为系统当前日期,“DN实例名”可通过以下语句查询。
1 2 3 4 5 6 7 8 9 10 11 12
SELECT node_name,node_host FROM pgxc_node WHERE node_type='D'; node_name | node_host --------------+---------------- dn_6001_6002 | 192.168.0.11 dn_6003_6004 | 192.168.0.11 dn_6005_6006 | 192.168.0.12 dn_6007_6008 | 192.168.0.12 dn_6009_6010 | 192.168.0.13 dn_6011_6012 | 192.168.0.13 dn_6013_6014 | 192.168.0.14 dn_6015_6016 | 192.168.0.14 (8 rows)
以IP为192.168.0.11的节点为例,该节点上的DN实例名为“dn_6001_6002”和“dn_6003_6004”,则导出的数据文件存放在该节点“/output_data/20160101/dn_6001_6002”和“/output_data/20160101/dn_6003_6004”目录下。
- 在数据库上创建外表foreign_tpcds_reasons,用于导出数据。
查看更多:华为GaussDB 200 使用外表并行导出「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论
- 修改数据服务器上数据文件目录“/output_data”的属主为gds_user。
- (可选)创建用户及其所属的用户组。此用户用于启动GDS。若该类用户及所属用户组已存在,可跳过此步骤。