示例3:Private策略导入
假设集群共有4台主机,8个主DN,即每个主机上有2个主DN。待导入数据文件有8个,每个50MB。文件格式为CSV。
- 以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=#
- 查询各主机上的DN名称。
1
SELECT node_name,node_host FROM pgxc_node WHERE node_type='D';
示例:
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)
- 将数据源文件上传每个DN所在的主机。
- 以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
- 将数据源文件均匀分发到集群各主机上一步骤中所创建的子目录中。
- 修改各主机上待导入数据源文件及数据文件目录“/input_data”的属主为omm。
chown -R omm:wheel /input_data
- 创建导入的目标表reasons。
1 2 3 4 5 6
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。
1 2 3 4 5 6 7
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。
1
INSERT INTO reasons SELECT * FROM foreign_tpcds_reasons;
- 查询错误信息表err_tpcds_reasons,处理数据加载错误。详细请参见处理错误表。
1
SELECT * FROM err_tpcds_reasons;
查看更多:华为GaussDB 200 通过外表并行导入示例
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论
- 查询各主机上的DN名称。