• 沒有找到結果。

步骤1 根据上传数据到OBS中规划的路径,由此确定创建外表时使用的参数loaction的值。

步骤2 用户获取OBS访问协议对应的AK值和SK值。获取访问密钥,请登录管理控制台,将鼠 标移至右上角的用户名,单击“我的凭证”,然后在左侧导航树单击“访问密钥”。

在访问密钥页面,可以查看已有的访问密钥ID(即AK),如果要同时获取AK和SK,可 以单击“新增访问密钥”创建并下载访问密钥。

步骤3 梳理待导入数据的格式信息,确定创建外表时使用的数据格式参数的值。需要收集的 主要数据源格式信息如下:

format:外表中数据源文件的格式。OBS外表导入支持CSV、TEXT格式。缺省值 为TEXT。

header:指定导出数据文件是否包含标题行,header只能用于CSV格式的文件 中。

delimiter:指定数据文件行数据的字段分隔符,不指定则使用默认分隔符。

● 外表可以识别的更多参数,详细使用请参见数据格式参数 。 步骤4 规划并行导入容错性,以控制导入过程中处理错误的方式。

fill_missing_fields:数据入库时,数据源文件中某行的最后一个字段缺失时,请 选择是直接将字段设为Null,还是在错误表中报错提示。

ignore_extra_data:数据源文件中的字段比外表定义列数多时,请选择是忽略多 出的列,还是在错误表中报错提示。

per node reject limit:本次数据导入过程中每个DN实例上允许出现的数据格式 错误的数量。如果有一个DN实例上录入错误表中的错误数量超过设定值时,本次 导入失败,报错退出。可以选择不做限制,也可以根据所能容忍的错误数量选择 一个上限值。

compatible_illegal_chars:导入时遇到非法字符,选择如何处理。是将非法字 符按照转换规则转换后入库,还是报错中止导入。

非法字符容错转换规则如下:

– 对于'\0',容错后转换为空格。

– 对于其他非法字符,容错后转换为问号。

– 对非法字符进行容错转换时,如遇NULL、DELIMITER、QUOTE、ESCAPE也 设置成了空格或问号,GaussDB(DWS)会通过如"illegal chars conversion may confuse COPY escape 0x20"等报错信息提示用户修改可能引起混淆的 参数以避免导入错误。

error_table_name:用于记录数据格式错误信息的错误表表名。并行导入结束后 查询此错误信息表,能够获取详细的错误信息。

● 更多参数,详细使用请参见容错性参数。

步骤5 根据前面步骤确定的参数,创建OBS外表。外表的创建语法以及详细使用,请参考 CREATE FOREIGN TABLE (OBS导入导出)。

----结束

示例

在GaussDB(DWS)数据库中,创建一个外表。参数信息如下所示:

● 数据格式参数访问秘钥(AK和SK)

– 用户获取OBS访问协议对应的AK值(access_key)。

– 用户获取OBS访问协议对应的SK值 (secret_access_key)。

说明

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

● 设置数据格式参数

– 数据源文件格式(format)为CSV。

– 编码格式(encoding)为UTF-8。

– 是否使用加密(encrypt),默认为 'off'。

PER NODE REJECT LIMIT '

value

' 为unlimited,即接受导入过程中所有数 据格式错误。

LOG INTO

error_table_name

指定为product_info_err,将数据导入过程中 出现的数据格式错误信息写入表product_info_err。

fill_missing_fields 为true,即当数据加载时,若数据源文件中一行数据的最 后一个字段缺失,则把最后一个字段的值设置为NULL,不报错。

ignore_extra_data为true,当数据加载时,若数据源文件比外表定义列数 多,则忽略行尾多出来的列,不报错。

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

DROP FOREIGN TABLE product_info_ext;

CREATE FOREIGN TABLE product_info_ext ( product_price integer not null, ) SERVER gsmpp_server

OPTIONS(

LOCATION 'gsobs://hostname/mybucket/input_data/product_info | gsobs://hostname/mybucket02/

input_data/product_info', FORMAT 'CSV' ,

DELIMITER ',',

LOG INTO product_info_err PER NODE REJECT LIMIT 'unlimited';

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

CREATE FOREIGN TABLE

3.2.2.4 执行导入数据