首页 > 数据库 > > 使用外表并行导出-示例
规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导出数据文件格式为CSV,所以规划的并行导出模式为Remote模式。
Remote模式并行导出数据操作示例如下所示:
mkdir -p /output_data(可选)创建用户及其所属的用户组。此用户用于启动GDS。若该类用户及所属用户组已存在,可跳过此步骤。
groupadd gdsgrp
useradd -g gdsgrp gds_user
chown -R gds_user:gdsgrp /output_data以gds_user用户登录数据服务器上分别启动GDS。
/opt/bin/gds/gds -d /output_data -p 192.168.0.90:5000 -H 10.10.0.1/24 -D在数据库中创建外表foreign_tpcds_reasons用于接收数据服务器上的数据。
其中设置的导出模式信息如下所示:
设置导出的数据文件格式信息如下所示:
根据以上信息,创建的外表如下所示:
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;
INSERT INTO foreign_tpcds_reasons SELECT * FROM reasons;待数据导出完成后,以gds_user用户登录数据服务器,停止GDS。
ps -ef|grep gds
gds_user 128954 1 15:03 ? 00:00:00 gds -d /output_data -p 192.168.0.90:5000 -D
gds_user 129003 118723 15:04 pts/ 00:00:00 grep gds
kill -9 128954
规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导出的数据文件格式为CSV,同时导出2个目标表,所以规划使用Remote模式进行多线程导处。
Remote模式多线程导出数据操作示例如下所示:
mkdir -p /output_data
groupadd gdsgrp
useradd -g gdsgrp gds_user
chown -R gds_user:gdsgrp /output_data以gds_user用户登录数据服务器上启动GDS。
/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用于接收数据服务器上的数据。
根据以上信息,创建的外表foreign_tpcds_reasons1如下所示:
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如下所示:
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;
INSERT INTO foreign_tpcds_reasons1 SELECT * FROM reasons1;INSERT INTO foreign_tpcds_reasons2 SELECT * FROM reasons2;待数据导出完成后,以gds_user用户登录数据服务器,停止GDS。
ps -ef|grep gds
gds_user 128954 1 15:03 ? 00:00:00 gds -d /output_data -p 192.168.0.90:5000 -D -t 2
gds_user 129003 118723 15:04 pts/ 00:00:00 grep gds
kill -9 128954
集群总共有8个DN,其中每2个DN位于同一个物理节点上,共有4个物理节点,且磁盘空间足够且集群节点IO性能好,所以选择的并行导出模式为local模式。
Local模式导出数据操作示例如下所示:
mkdir -p /output_data
chown -R omm:wheel /output_data
根据以上信息,创建的外表foreign_tpcds_reasons如下所示:
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;
INSERT INTO foreign_tpcds_reasons SELECT * FROM reasons;查看导出的数据文件。
数据文件将生成在集群各节点的“/output_data/YYYYMMDD/DN实例名”目录下。其中,“YYYYMMDD”为系统当前日期,“DN实例名”可通过以下语句查询。
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”目录下。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3146461/ ,如需转载,请注明出处,否则将追究法律责任。