创建OBS外表
操作步骤
- 根据规划导出数据中规划的路径,由此确定创建外表时使用的参数location的值。
- 用户获取OBS访问协议对应的AK值和SK值。
获取访问密钥,请登录管理控制台,单击右上角的用户名并选择菜单“我的凭证”,然后在左侧导航树单击“管理访问密钥”。在访问密钥页面,可以查看已有的访问密钥ID(即AK),如果要同时获取AK和SK,可以单击“新增访问密钥”创建并下载访问密钥。
- 梳理待导出数据的格式信息,确定创建外表时使用的数据格式参数的值。详细使用请参见数据格式参数。
- 根据前面步骤确定的参数,创建OBS外表。
示例一
例如,在GaussDB(DWS)数据库中,创建一个format参数为text的只写外表,用于导出text文件。设置的参数信息如下所示:
- location
在规划导出数据中,通过获取数据源文件的OBS路径已经获取到数据源文件的OBS路径。
因此,设置参数“location”为:
location 'obs://mybucket/output_data/',
- 访问密钥(AK和SK)
- 用户获取OBS访问协议对应的AK值(access_key)。
- 用户获取OBS访问协议对应的SK值 (secret_access_key)。
用户在创建用户时已经获取了access_key和secret_access_key的密钥,请根据实际密钥替换示例中的内容。
- 设置数据格式参数
- 数据源文件格式(format)为“TEXT”。
- 编码格式(encoding)为“UTF-8”。
- 是否使用加密(encrypt),默认为“off”。
- 字段分隔符(delimiter)为“|”。
根据以上信息,创建的外表如下所示:
认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DROP FOREIGN TABLE IF EXISTS product_info_output_ext1; CREATE FOREIGN TABLE product_info_output_ext1 ( c_bigint bigint, c_char char(30), c_varchar varchar(30), c_nvarchar2 nvarchar2(30) , c_data date, c_time time , c_test varchar(30)) server gsmpp_server options ( LOCATION 'obs://mybucket/output_data/', ACCESS_KEY 'access_key_value_to_be_replaced', SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced' format 'text', delimiter '|', encoding 'utf-8', encrypt 'on' ) WRITE ONLY; |
返回如下信息表示创建成功:
CREATE FOREIGN TABLE
示例二
例如,在GaussDB(DWS)数据库中,创建一个format参数为CSV的只写外表,用于导出CSV文件。设置的参数信息如下所示:
- location
在规划导出数据中,通过获取数据源文件的OBS路径,已经获取到数据源文件的OBS路径。
因此,设置参数“location”为:
1
location 'obs://mybucket/output_data/',
- 访问密钥(AK和SK)
- 用户获取OBS访问协议对应的AK值(access_key)。
- 用户获取OBS访问协议对应的SK值 (secret_access_key)。
用户在创建用户时已经获取了access_key和secret_access_key的密钥,请根据实际密钥替换示例中的对应内容。
- 设置数据格式参数
- 数据源文件格式(format)为“CSV”。
- 编码格式(encoding)为“UTF-8”。
- 是否使用加密(encrypt),默认为 “off”。
- 字段分隔符(delimiter)为“,”。
- header(指定导出数据文件是否包含标题行)
指定导出数据文件是否包含标题行,标题行一般用来描述表中每个字段的信息。
OBS导出数据时不支持该参数为true,使用缺省值false,不需要设置,表示导出的数据文件第一行不是标题行(即表头)。
根据以上信息,创建的外表如下所示:
认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。
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 |
DROP FOREIGN TABLE IF EXISTS product_info_output_ext2; CREATE FOREIGN TABLE product_info_output_ext2 ( 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 'obs://mybucket/output_data/', 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' ) WRITE ONLY ; |
返回如下信息表示创建成功:
1
|
CREATE FOREIGN TABLE |