文档首页 > > 最佳实践> 教程:从OBS导入数据到集群>

步骤2:创建外表

步骤2:创建外表

分享
更新时间:2021/04/08 GMT+08:00
  1. 连接GaussDB(DWS)数据库。
  2. 创建外表,用于对接步骤1:上传数据到OBS中已上传到OBS上的三个CSV格式的数据文件,为后续将数据引流至GaussDB(DWS)普通表中做准备。

    外表样例如下,关于此样例中的各项参数设置解释见样例下方。

    外表中各参数项的定义主要是为了识别数据格式及设置导入容错性,此教程中只给了关键参数的设置,有关外表的更多设置办法,请参考CREATE FOREIGN TABLE (OBS导入导出)
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    DROP FOREIGN TABLE IF EXISTS product_info_ext;
    CREATE FOREIGN TABLE product_info_ext
    (
        product_price                integer        not null,
        product_id                   char(30)       not null,
        product_time                 date           ,
        product_level                char(10)       ,
        product_name                 varchar(200)   ,
        product_type1                varchar(20)    ,
        product_type2                char(10)       ,
        product_monthly_sales_cnt    integer        ,
        product_comment_time         date           ,
        product_comment_num          integer        ,
        product_comment_content      varchar(200)                   
    ) 
    SERVER gsmpp_server 
    OPTIONS(
    LOCATION 'gsobs://hostname/mybucket/input_data/product_info | gsobs://hostname/mybucket02/input_data/product_info',
    FORMAT 'CSV' ,
    DELIMITER ',',
    ENCODING 'utf8',
    HEADER 'false',
    ACCESS_KEY 'access_key_value_to_be_replaced',
    SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced',
    FILL_MISSING_FIELDS 'true',
    IGNORE_EXTRA_DATA 'true'
    )
    READ ONLY 
    LOG INTO product_info_err 
    PER NODE REJECT LIMIT 'unlimited';
    
    返回如下信息表示创建成功:
    1
    CREATE FOREIGN TABLE
    

    外表中相关参数的设置说明如下:

    • SERVER:无需修改,即固定设为gsmpp_server。
    • LOCATION:OBS路径由“obs://”、桶名和文件路径组成,即为:obs://<bucket_name>/<file_path>

      OBS导入导出数据时,不支持中文路径。

      location参数中前缀gsobs、obs均支持,都识别为OBS的信息,若为gsobs时,其中包含obs url、bucket、prefix,若为obs时则表示bucket、prefix。

      设置为参数“location”的值,多个路径间以“|”分隔。即:
      LOCATION 'obs://mybucket/input_data/product_info  |  obs://mybucket02/input_data/product_info',
      根据前缀匹配原则,mybucket中的以下两个文件都会被导入:
      mybucket/input_data/product_info0.csv
      mybucket/input_data/product_info1.csv
    • region

      可选参数,region参数指定regionCode,regionCode为云上的region信息,比如cn-north-1,cn-south-1等。

      若显式指定此参数,域名信息将会读取指定的region参数;若此参数不指定,则读取defaultRegion的值,即安装集群时指定的region。

    • FORMAT

      此教程中待入库的为CSV格式的数据,故设为CSV。如果是其他格式,请对应替换。

    • DELIMITER

      此教程中数据源文件中的数据是以“,”分隔的。

    • ENCODING

      此教程中数据源文件编码格式为UTF-8。

    • HEADER

      此参数用于指定数据文件是否包含标题行。该参数只针对CSV格式的数据文件有效。准备数据文件中的数据文件第一行不是标题行(即表头),故设为“false”。

    • ACCESS_KEY和SECRET_ACCESS_KEY

      用户访问OBS的AK和SK,请根据实际替换。获取访问密钥,请登录管理控制台,将鼠标移至右上角的用户名,单击“我的凭证”,然后在左侧导航树单击“访问密钥”。在访问密钥页面,可以查看已有的访问密钥ID(即AK),如果要同时获取AK和SK,可以单击“新增访问密钥”创建并下载访问密钥。

    • FILL_MISSING_FIELDS

      当数据导入时,数据源文件中一行的最后一个字段缺失的处理方式。默认为false/off。本教程中设为“true”。

      • true/on:表示最后一个字段缺失时,把最后一个字段的值设置为NULL,不报错。
      • false/off:表示最后一个字段缺失时,做如下报错提示:missing data for column "tt"。
        例如,源数据文件product_info2.csv中第2条记录的最后一个字段段“product_comment_content”缺失。当FILL_MISSING_FIELDS设为false/off时,导入数据时错误表中会有类似如下的错误信息:
        missing data for column "product_comment_content"
    • IGNORE_EXTRA_DATA

      数据源文件中的字段比外表定义列数多时,是否忽略多出的列。默认为false/off。本教程中设为“true”。

      • true/on:数据源文件中字段比外表定义列数多,则忽略行尾多出来的列。不报错
      • false/off:若数据源文件中字段比外表定义列数多,做如下报错提示:extra data after last expected column。

        例如,源数据文件product_info2.csv中第3条记录比外表定义列数多。当IGNORE_EXTRA_DATA设为false/off时,导入数据时错误表中会有类似如下的错误信息:

        extra data after last expected column
    • READ ONLY

      外表的语法定义通用于从OBS导入数据到GaussDB(DWS)集群和从集群导出数据到OBS。数据导入集群时,请将外表设为READ ONLY;导出时,请设为WRITE ONLY。

    • LOG INTO

      指定记录导入过程中数据格式错误信息的错误表。只需指定表名,无需预先创建。GaussDB(DWS)在执行创建外表语句时会自动创建该表,并在删除外表时对其自动删除。

    • PER NODE REJECT LIMIT

      指定本次数据导入过程中每个DN实例上允许出现的数据格式错误的数量,如果有一个DN实例上的错误数量大于设定值,本次导入失败,报错退出。

      本教程设置为“unlimited”,即接受导入过程中所有数据格式错误。

分享:

    相关文档

    相关产品

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

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问