云数据库 GAUSSDB-示例1:Normal策略导入:示例:多线程导入
示例:多线程导入
规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,导入的数据源文件格式为 CS V,同时导入2个目标表。
- 在数据库中创建导入的目标表tpcds.reasons1和tpcds.reasons2。
1 2 3 4 5 6
postgres=# CREATE TABLE tpcds.reasons1 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) ;
1 2 3 4 5 6
postgres=# CREATE TABLE tpcds.reasons2 ( r_reason_sk integer not null, r_reason_id char(16) not null, r_reason_desc char(100) ) ;
- (可选)创建用户及其所属的用户组。此用户用于启动GDS。若该用户及所属用户组已存在,可跳过此步骤。
groupadd gdsgrp useradd -g gdsgrp gds_user
- 切换用户gds_user,登录GDS数据服务器,创建数据文件存放目录“/input_data”,以及子目录“/input_data/import1/”和“/input_data/import2/”。
su - gds_user mkdir -p /input_data
- 将目标表tpcds.reasons1的数据源文件存放在数据服务器“/input_data/import1/”目录下,将目标表tpcds.reasons2的数据源文件存放在目录“/input_data/import2/”下。
- 修改数据服务器上数据文件及数据文件目录“/input_data”的属主为gds_user。
chown -R gds_user:gdsgrp /input_data
- 以gds_user用户登录数据服务器上启动GDS。
- 在数据库中创建外表tpcds.foreign_tpcds_reasons1和tpcds.foreign_tpcds_reasons2用于接收数据服务器上的数据。
以下以外表tpcds.foreign_tpcds_reasons1为例,讲解设置的导入外表参数信息。
其中设置的导入模式信息如下所示:
- 导入模式为Normal模式。
- 由于启动GDS时,设置的数据源文件存放目录为“/input_data/”,GDS侦听端口为5000,实际存放数据源文件目录为“/input_data/import1/”,所以设置参数“location”为“gsfs://192.168.0.90:5000/import1/*”。
设置的数据格式信息是根据导出时设置的详细数据格式参数信息指定的,参数设置如下所示:
- 数据源文件格式(format)为CSV。
- 编码格式(encoding)为UTF-8。
- 字段分隔符(delimiter)为E'\x08'。
- 引号字符(quote)为0x1b。
- 数据文件中空值(null)为没有引号的空字符串。
- 逃逸字符(escape)为默认值双引号。
- 数据文件是否包含标题行(header)为默认值false,即导入时数据文件第一行被识别为数据。
设置的导入容错性如下所示:
- 允许出现的数据格式错误个数(PER NODE REJECT LIMIT 'value')为unlimited,即接受导入过程中所有数据格式错误。
- 将数据导入过程中出现的数据格式错误信息( LOG INTO error_table_name)写入表err_tpcds_reasons1。
- 当数据源文件中一行的最后一个字段缺失(fill_missing_fields)时,自动设置为NULL。
根据以上信息,创建的外表tpcds.foreign_tpcds_reasons1如下所示:
1 2 3 4 5 6
postgres=# CREATE FOREIGN TABLE tpcds.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/import1/*', format 'CSV',mode 'Normal', encoding 'utf8', delimiter E'\x08', quote E'\x1b', null '',fill_missing_fields 'on')LOG INTO err_tpcds_reasons1 PER NODE REJECT LIMIT 'unlimited';
参考以上设置,创建的外表tpcds.foreign_tpcds_reasons2如下所示:
1 2 3 4 5 6
postgres=# CREATE FOREIGN TABLE tpcds.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/import2/*', format 'CSV',mode 'Normal', encoding 'utf8', delimiter E'\x08', quote E'\x1b', null '',fill_missing_fields 'on')LOG INTO err_tpcds_reasons2 PER NODE REJECT LIMIT 'unlimited';
- 通过外表tpcds.foreign_tpcds_reasons1和tpcds.foreign_tpcds_reasons2将数据分别导入tpcds.reasons1和tpcds.reasons2。
1
postgres=# INSERT INTO tpcds.reasons1 SELECT * FROM tpcds.foreign_tpcds_reasons1;
1
postgres=# INSERT INTO tpcds.reasons2 SELECT * FROM tpcds.foreign_tpcds_reasons2;
- 查询错误信息表err_tpcds_reasons1和err_tpcds_reasons2,处理数据导入错误。详细请参见处理错误表。
1 2
postgres=# SELECT * FROM err_tpcds_reasons1; postgres=# SELECT * FROM err_tpcds_reasons2;
- 待数据导入完成后,以gds_user用户登录数据服务器,停止GDS。
- 分布式云原生集合示例_华为云分布式云原生_华为云UCS集合示例
- GaussDB数据库_gaussdb类型_高斯数据库_华为云
- GaussDB最大容量_gaussdb基于_高斯数据库最大容量_华为云
- 华为云CodeArts API_接口迁移_接口导入
- GaussDB配额_GaussDB数据库配额_高斯数据库配额_华为云
- ModelArts推理部署_OBS导入_模型包规范-华为云
- GaussDB标签_GaussDB数据库标签_高斯数据库标签_华为云
- 数据治理中心_数据架构_数据架构使用示例-华为云
- 数据治理中心_数据开发_数据开发示例_使用教程-华为云
- GaussDB命令_GaussDB数据库命令_高斯数据库命令-华为云