更新时间:2024-11-05 GMT+08:00

创建GDS外表

操作步骤

  1. 根据规划导出数据中规划的路径确定外表参数location的值。

    • Remote模式
      请通过URL方式设置参数“location”,用于指定导出的数据文件存放路径。
      • 不需要指定文件名。
      • 当有多个路径时,若导出数据源数少于路径数时,多余的路径会只生成文件不写入数据。

      示例:

      GDS数据服务器IP为192.168.0.90,假定启动GDS时设置的监听端口为5000,设置的导出后文件存放目录为“/output_data/”。

      根据以上情况,在创建外表时,指定参数“location”为“gsfs://192.168.0.90:5000/”。

      • location可以指定子目录如“gsfs://192.168.0.90:5000/2019/11/”实现同一张表根据日期导出到不同目录下。
      • 现有版本在执行导出任务的时候会判断“/output_data/2019/11”目录是否存在,不存在则创建。导出时会将文件写入此目录下, 这样用户在创建或修改外表后就不需要再去手动执行“mkdir -p /output_data/2019/11”。

  2. 梳理待导出数据的格式信息,确定创建外表时使用的数据格式参数的值。
  3. 根据前面步骤确定的参数,创建GDS外表

示例

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

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

    规划数据服务器与集群处于同一内网,数据服务器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)为E'\x1b'。
    • 数据文件中空值(null)为没有引号的空字符串。
    • 逃逸字符(escape)默认和quote相同。
    • 数据文件是否包含标题行(header)为默认值false,即导出时数据文件第一行被识别为数据。
    • 导出数据文件换行符样式(EOL)为0X0A。
    创建的外表如下所示:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    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;