文档首页 > > 开发指南> 导入数据> 从OBS并行导入数据> 示例

示例

分享
更新时间: 2019/11/12 GMT+08:00
  1. DWS上,创建导入的目标表tpcds.customer_address。

    CREATE TABLE tpcds.customer_address
    (
        ca_address_sk             integer               not null,
        ca_address_id             char(16)              not null,
        ca_street_number          char(10)                      ,
        ca_street_name            varchar(60)                   ,
        ca_street_type            char(15)                      ,
        ca_suite_number           char(10)                      ,
        ca_city                   varchar(60)                   ,
        ca_county                 varchar(30)                   ,
        ca_state                  char(2)                       ,
        ca_zip                    char(10)                      ,
        ca_country                varchar(20)                   ,
        ca_gmt_offset             decimal(5,2)                  ,
        ca_location_type          char(20)
    )
    WITH (orientation = column,compression=middle)
    DISTRIBUTE BY hash (ca_address_sk);

  2. 用户通过管理控制台登录到OBS数据服务器。在OBS数据服务器上,分别创建数据文件存放的两个桶“/input_data1”和“/input_data2”,并创建每个桶下面的data目录“/input_data1/data”和“/input_data2/data”。
  3. 将数据源文件均匀上传至OBS数据服务器的“/input_data1/data/”和“/input_data2/data/”目录中。
  4. DWS上,创建外表tpcds.customer_address_ext用于接收数据服务器上的数据。

    假设OBS数据服务器与集群网络连接正常,OBS数据服务器IP为xxx.xxx.x.xx,数据源文件格式为CSV,规划的并行导入与示例保持一致。

    其中设置的导入信息如下所示:

    • 由于OBS服务器上的数据源文件存放目录为“/input_data1/data/ ”和/input_data2/data/ ,所以设置参数“location”为“obs://input_data1/data/ | obs://input_data2/data/”。

    设置的数据格式信息是根据数据源文件的详细数据格式参数信息指定的,参数设置如下所示:

    • 数据源文件格式(format)为CSV。
    • 编码格式(encoding)为UTF-8。
    • 字段分隔符(delimiter)为0E08。
    • 引号字符(quote)为0x1b。
    • 使用加密(encrypt)为 'on'。
    • 用户获取OBS访问协议对应的AK值(access_key) 。
    • 用户获取OBS访问协议对应的SK值 (secret_access_key)。

      请根据用户实际获取的access_key和secret_access_key的密钥替换示例中的斜体内容。

    设置的导入容错性如下所示:

    • 允许出现的数据格式错误个数(PER NODE REJECT LIMIT 'value')为unlimited,即接受导入过程中所有数据格式错误。
    • 将数据导入过程中出现的数据格式错误信息(LOG INTO error_table_name)写入表customer_address_err。

    根据以上信息,创建的外表如下所示:

    CREATE FOREIGN TABLE tpcds.customer_address_ext
    (
    ca_address_sk             integer                       ,
    ca_address_id             char(16)                      ,
    ca_street_number          char(10)                      ,
    ca_street_name            varchar(60)                   ,
    ca_street_type            char(15)                      ,
    ca_suite_number           char(10)                      ,
    ca_city                   varchar(60)                   ,
    ca_county                 varchar(30)                   ,
    ca_state                  char(2)                       ,
    ca_zip                    char(10)                      ,
    ca_country                varchar(20)                   ,
    ca_gmt_offset             decimal(5,2)                  ,
    ca_location_type          char(20)
    )
    SERVER gsmpp_server
    OPTIONS(location 'obs://input_data1/data/ | obs://input_data2/data/',
    FORMAT 'CSV' ,
    encoding 'utf8',
    DELIMITER E'\x08',
    quote E'\x1b',
    encrypt 'on',
    ACCESS_KEY 'access_key_value_to_be_replaced',
    SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced'
    )LOG INTO customer_address_err PER NODE REJECT LIMIT 'unlimited';

  5. DWS上,通过外表tpcds.customer_address_ext,将数据导入目标表tpcds.customer_address。

    INSERT INTO tpcds.customer_address SELECT * FROM tpcds.customer_address_ext;

  6. 查询错误信息表customer_address_err,处理数据导入错误。更多关于错误表的信息,请参见处理错误表

    SELECT * FROM customer_address_err;

  7. 在数据导入完成后,执行ANALYZE语句生成表统计信息。

    ANALYZE tpcds.customer_address;

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区