云数据库 GAUSSDB-步骤3:在GaussDB数据库中创建外表

时间:2024-11-02 18:48:12

步骤3:在 GaussDB 数据库中创建外表

  1. 使用SQL客户端工具连接GaussDB数据库。
  2. 根据需要导入数据信息表1,创建如下外表:

     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
    openGauss=# DROP FOREIGN TABLE IF EXISTS product_info_ext;
    openGauss=# 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 'gsfs://192.168.0.90:5000/*',
    FORMAT ' CS V' ,
    DELIMITER ',',
    ENCODING 'utf8',
    HEADER 'false',
    FILL_MISSING_FIELDS 'true',
    IGNORE_EXTRA_DATA 'true'
    )
    READ ONLY
     LOG  INTO product_info_err 
    PER NODE REJECT LIMIT 'unlimited';
    

    返回如下信息表示创建成功:

    1
    CREATE FOREIGN TABLE
    
    表1 外表各项的设置说明如下

    设置项

    说明

    SERVER

    gsmpp_server

    无需修改,即固定设为gsmpp_server。

    LOCATION

    gsfs://192.168.0.90:5000/*

    数据源文件位置。

    若使用SSL加密传输时,请使用gsfss协议。即为gsfss://192.168.0.90:5000/*

    FORMAT

    CSV

    数据源文件格式。

    ENCODING

    UTF-8

    数据编码格式。

    DELIMITER

    英文逗号

    字段分隔符。

    HEADER

    false(默认值)

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

    FILL_MISSING_FIELDS

    true

    当数据导入时,数据源文件中一行的最后一个字段缺失的处理方式。默认为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

    true

    数据源文件中的字段比外表定义列数多时,是否忽略多出的列。默认为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

    PER NODE REJECT LIMIT 'value'

    unlimited

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

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

    READ ONLY

    -

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

    WITH error_table_name

    错误表名称product_info_err。

    数据导入过程中出现的数据格式错误信息将被写入product_info_err指定的错误信息表中,可以在并行导入结束后查询此错误信息表,获取详细的错误信息。

    完整的选项说明请见 CREATE FOREIGN TABLE (导入导出)

support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb_v5r2c10_0098.html