高斯数据库 (gaussDB) - 导入数据 - 通过外表并行导入(7)
示例 2 :Shared 策略导入
- 导入前的准备。
假设 TEXT 格式的数据源文件“foreign_tpcds_reasons.dat.0”保存在 192.168.0.90 服
务器上“/input_data”目录下。
a. 在数据服务器上配置 NFS 服务。具体配置方法可以参考 SUSE DOC :管理指
南 - 配置 NFS 服务器。
b. 在数据服务器上启动 NFS 服务。service nfs start
c. 以 root 用户在 GaussDB 200 各 DN 所在的主机创建数据文件目录上“/
input_data”,并将数据源服务器 mount 到此目录下。cd /input_data
mount -t nfs 192.168.0.90:/input_data /input_data
- 以 omm 用户身份登录 CN 所在服务器,执行 source ${BIGDATA_HOME}/
mppdb/.mppdbgs_profile 命令启动环境变量。 - 使用如下命令连接数据库。
gsql -d postgres -p 25308
postgres 为需要连接的数据库名称,25308 为 CN 的端口号。
连接成功后,系统显示类似如下信息:
gsql ((GaussDB Kernel V300R002C00 build 50dc16a6) compiled at 2019-01-29 05:49:21 commit
1071 last mr 1373)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
- 创建导入目标表 reasons。
CREATE TABLE reasons
(
r_reason_sk integer not null,
r_reason_id char(16) not null,
r_reason_desc char(100)
);
- 创建外表 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:///input_data/foreign_tpcds_reasons.dat.0',
format 'TEXT', mode 'shared', delimiter E'\x08', NULL '');
- 将数据导入 reasons。
INSERT INTO reasons SELECT * FROM foreign_tpcds_reasons;
示例 3 :Private 策略导入
假设集群共有 4 台主机,8 个主 DN,即每个主机上有 2 个主 DN。待导入数据文件有 8
个,每个 50MB。文件格式为 CSV。
1. 以 omm 用户身份登录 CN 所在服务器,执行 source ${BIGDATA_HOME}/
mppdb/.mppdbgs_profile 命令启动环境变量。
2. 使用如下命令连接数据库。gsql -d postgres -p 25308
postgres 为需要连接的数据库名称,25308 为 CN 的端口号。
连接成功后,系统显示类似如下信息:
gsql ((GaussDB Kernel V300R002C00 build 50dc16a6) compiled at 2019-01-29 05:49:21 commit
1071 last mr 1373)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
- 查询各主机上的 DN 名称。
SELECT node_name,node_host FROM pgxc_node WHERE node_type='D';
示例:
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)
- 将数据源文件上传每个 DN 所在的主机。
a. 以 root 用户登录集群的每台主机,创建数据文件存放目录“/input_data”,以
及以该主机上“DN 名称”命名的子目录。
以 3. 查询各主机上的 DN 名称。所查到的 IP 为“192.168.0.11”的节点为例,创
建数据存放目录。根据上一步骤查询所得,该节点上存在 2 个 DN,名称分别
为“dn_6001_6002”和“dn_6003_6004”。
mkdir -p /input_data
mkdir -p /input_data/dn_6001_6002
mkdir -p /input_data/dn_6003_6004
b. 将数据源文件均匀分发到集群各主机上一步骤中所创建的子目录中。
c. 修改各主机上待导入数据源文件及数据文件目录“/input_data”的属主为
omm。chown -R omm:wheel /input_data
5. 创建导入的目标表 reasons。
CREATE TABLE reasons
(
r_reason_sk integer not null,
r_reason_id char(16) not null,
r_reason_desc char(100)
);
- 创建外表 foreign_tpcds_reasons 用于接收数据。
其中设置的 导入模式信息如下所示:
– 导入模式为 Private 模式。
– 由于数据源文件存放在集群节点上以 DN 名命令的文件夹下,可以以本地文件
方式访问,所以设置参数“location”为“file:///input_data/*”。
设置的 数据格式信息是根据导出时设置的详细数据格式参数信息指定的,参数设
置如下所示:
– 数据源文件格式(format)为 CSV。
– 字段分隔符(delimiter)为逗号。
– 引号字符(quote)为 0x1b。
– 数据文件中空值(null)为没有引号的空字符串。
设置的 导入容错性如下所示:
– 允许出现的数据格式错误个数(PER NODE REJECT LIMIT ‘value’)为
unlimited,即接受导入过程中所有数据格式错误。
– 将数据导入过程中出现的数据格式错误信息(LOG INTO error_table_name)
写入表 err_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:///input_data/*', format 'CSV', mode 'private',
delimiter ',', quote E'\x1b', null '')LOG INTO err_tpcds_reasonS PER NODE REJECT LIMIT
'unlimited';
- 将数据导入 reasons。
INSERT INTO reasons SELECT * FROM foreign_tpcds_reasons;
- 查询错误信息表 err_tpcds_reasons,处理数据加载错误。详细请参见 8.1.7 处理错误
表。SELECT * FROM err_tpcds_reasons;
展开阅读全文
版权声明:
本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:jaagool@sina.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:jaagool@sina.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。