基于文件的外表配置
云平台普遍支持通用的对象存储系统,提供对文件的可扩展读写能力,是广泛使用的一类面向湖场景的数据存储平台,本文介绍基于文件的外部表配置方法。
安装扩展
安装extension,仅需要安装一次,如果已经安装过,可以忽略。
CREATE EXTENSION file_fdw;
创建文件存储外部服务器
创建阿里云OSS的外部服务器
CREATE SERVER <server_name> FOREIGN DATA WRAPPER file_fdw
OPTIONS (
REGION 'region-id',
OSS_ENDPOINT 'endopint-url'
);
-
REGION
云存储服务的REGION ID,具体的ID参考阿里云OSS Region和Endpoint对照表 (opens in a new tab) -
OSS_ENDPOINT
云存储服务的Endpoint,具体的Endpoint参考阿里云OSS Region和Endpoint对照表 (opens in a new tab)。如果ProtonBase与云存储部署在同一个Region,建议使用内网Endpoint。
-- 参考示例
CREATE SERVER oss_server FOREIGN DATA WRAPPER file_fdw
OPTIONS (
REGION 'oss-cn-beijing',
OSS_ENDPOINT 'https://oss-cn-beijing-internal.aliyuncs.com/' -- 同一区域建议使用oss内网地址
);
创建AWS S3的外部服务器
CREATE SERVER <server_name> FOREIGN DATA WRAPPER file_fdw
OPTIONS (
REGION 'region-id'
);
REGION
云存储服务的REGION ID,具体的ID参考AWS S3 Endpoint (opens in a new tab)。
-- 参考示例
CREATE SERVER s3_server FOREIGN DATA WRAPPER file_fdw
OPTIONS (
REGION 'cn-north-1'
);
创建用户映射
为本地用户账号授予对应的对象存储的访问权限,通过access_id
和access_key
授权。
CREATE USER MAPPING FOR <local_user> SERVER oss_server
OPTIONS (
ACCESS_ID 'access-id',
ACCESS_KEY 'access-key'
);
创建外表
CREATE FOREIGN TABLE <table_name> (
<column_name> <data_type>,
...
)
SERVER <server_name>
OPTIONS (
FILENAME '<path_to_file>',
DIR '<path_to_oss>',
FORMAT '<csv|text|parquet|orc>'
);
-
OPTIONS中的
FILENAME
指定外部文件的路径 -
OPTIONS中的
DIR
指定外部对象存储的目录路径 -
OPTIONS中的
FORMAT
指定文件格式,可以是csv(逗号分隔),text(纯文本),parquet,orc
-- create paquet table
CREATE FOREIGN TABLE f_t1(
col1 INT,
col2 TEXT -- 手动定义schema
)
SERVER oss_server
OPTIONS
(
FORMAT 'parquet', -- 或者orc
DIR 'oss://demo-bj/data/'
);
-- 从外表导入到 protonbase 内表
INSERT INTO local_t1 SELECT * FROM f_t1;