云数据库 GAUSSDB-创建GDS外表:示例

时间:2024-01-23 20:09:20

示例

  • 示例1:创建GDS导出外表foreign_tpcds_reasons,待导出数据格式为 CS V,用于接收数据服务器上的数据。

    其中设置的导出模式信息如下所示:

    规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,待导出的数据文件格式为CSV,选择并行导出模式为Remote模式。

    假定启动GDS时,规划导出的数据文件存放目录为“/output_data/”,GDS侦听端口为5000,所以设置参数“location”为“gsfs://192.168.0.90:5000/”。

    设置导出的数据格式信息,参数设置如下所示:

    • 导出数据文件格式(format)为CSV。
    • 编码格式(encoding)为UTF-8。
    • 字段分隔符(delimiter)为E'\x08'。
    • 引号字符(quote)为0x1b。
    • 数据文件中空值(null)为没有引号的空字符串。
    • 逃逸字符(escape)为默认值双引号。
    • 数据文件是否包含标题行(header)为默认值false,即导出时数据文件第一行被识别为数据。
    • 导出数据文件换行符样式(EOL)为0X0A。
    创建的外表如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    postgres=# 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 'gsfs://192.168.0.90:5000/', 
    FORMAT 'CSV',
    DELIMITER E'\x08',
    QUOTE E'\x1b', 
    NULL '', 
    EOL '0x0a'
    )
    WRITE ONLY;
    
  • 示例2:创建GDS导出外表foreign_tpcds_reasons,导出数据格式为FIXED,用于接收数据服务器上的数据。

    其中设置的导出模式信息如下所示:

    规划数据服务器与集群处于同一内网,数据服务器IP为192.168.0.90,计划导出的数据文件格式为CSV,选择并行导出模式为Remote模式。

    假定启动GDS时,规划导出的数据文件存放目录为“/output_data/”,GDS侦听端口为5000,所以设置参数“location”为“gsfs://192.168.0.90:5000/”。

    设置导出的数据格式信息,参数设置如下所示:

    • 导出数据文件格式(format)为FIXED。
    • 编码格式(encoding)为UTF-8。
    • 数据文件是否包含标题行(header)为默认值false,即指定导出数据文件是不包含标题行。
    • 定义每一个字段在数据文件中的位置POSITION(offset,length)。其中offset为该字段在文件中的起始位置,length为该字段的长度,单位为字节。

      字段“r_reason_sk”,数据类型为integer,使用以下查询所得占用的最大字节数为2,所以设置的起始位置为1,长度为2。

      字段“r_reason_id”,数据类型为character varying(16),使用以下查询所得占用的最大字节数为16,所以设置的起始位置为字段“r_reason_sk”的offset+length=1+2=3,长度为16。

      字段“r_reason_desc”,数据类型为character varying(100),使用以下查询所得占用的最大字节数为100,所以设置的起始位置为字段“r_reason_id”的offset+length=3+16=19,长度为100。

      1
      2
      3
      4
      5
      postgres=# SELECT max(lengthb(r_reason_sk)),max(lengthb(r_reason_id)),max(lengthb(r_reason_desc)) FROM reasons;
       max | max | max 
      -----+-----+-----
         2 |  16 | 100
      (1 row)
      
    • 导出数据文件换行符样式(EOL)为0X0A。
    创建的外表如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    postgres=# CREATE FOREIGN TABLE foreign_tpcds_reasons
    ( r_reason_sk    integer        position(1,2),
      r_reason_id    char(16)       position(3,16),
      r_reason_desc  char(100)      position(19,100)
    ) 
    SERVER gsmpp_server 
    OPTIONS (LOCATION 'gsfs://192.168.0.90:5000/', 
    FORMAT 'FIXED', 
    ENCODING 'utf8',
    EOL '0x0a'
    )
    WRITE ONLY;
    
support.huaweicloud.com/devg-v1-gaussdb/gaussdb_devg_0231.html