概述
一、创建 hdfs_fdw 插件
CREATE EXTENSION hdfs_fdw;
二、创建 SERVER
根据实际情况选择以下三种 Server 中的一种创建。
三、创建 COS Server
CREATE SERVER $cos_server名FOREIGN DATA WRAPPER hdfs_fdwOPTIONS ( address 'cos://$bucketname', appid '$appid', access_keyid '$ak', secret_accesskey '$sk', region '$region', client_type 'cos');
四、创建 HDFS Server
CREATE SERVER $hdfs_server名FOREIGN DATA WRAPPER hdfs_fdwOPTIONS ( address 'ofs://xxxxxx.chdfs.ap-guangzhou.myqcloud.com', appid '$appid', client_type 'hdfs');
五、创建融合桶 Server
CREATE SERVER $cosn_server名FOREIGN DATA WRAPPER hdfs_fdwOPTIONS ( address 'cosn://$bucketname', appid '$appid', access_keyid '$ak', secret_accesskey '$sk', region '$region', client_type 'cosn');
六、创建 USER MAPPING
根据实际情况选择以下三种 User Mapping 中的一种创建。
CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $cos_server名; — 前面创建的 COS Server 的CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $hdfs_server名; — 前面创建的 HDFS Server 的CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $cosn_server名; — 前面创建的融合桶 Server 的
七、创建非分区外表
表指定文件格式需要和远程读取的文件格式一致。
八、创建 CSV 格式的表
CREATE FOREIGN TABLE test_csv(id int, name TEXT)SERVER $ServerNameOPTIONS ( FORMAT 'csv', FOLDERNAME '$数据目录/', distribute 'shard');
九、创建 TEXT 格式的表
CREATE FOREIGN TABLE test_text(id int, name TEXT)SERVER $ServerNameOPTIONS ( FORMAT 'text', DELIMITER '$列分隔符', FOLDERNAME '$数据目录/', distribute 'shard');
十、创建 ORC 格式的表
CREATE FOREIGN TABLE orc_table(a bigint, b text, c float)SERVER $ServerNameOPTIONS ( FORMAT 'orc', FOLDERNAME '$数据目录/', distribute 'shard');
十一、创建分区外表
当 Hive 建表语句为以下时:
CREATE FOREIGN TABLE login_logs_orc(l_id text,l_loginName text,l_date text,year text,month text)SERVER cosn_serverOPTIONS ( FORMAT 'orc', FOLDERNAME '$数据目录/', distribute 'shard', PARTITION 'year,month');
十二、查询外表并将数据导入内部表
insert into 内部表 select * from 外部表;
十三、创建写的外部表
根据实际情况选择以下三种中的一种创建:
create foreign table f_csv(f1 int, f2 int)server cos_serveroptions(FORMAT 'csv', DELIMITER ',', FOLDERNAME '/csv/', distribute 'shard') WRITE ONLY;create foreign table f_txt(f1 int, f2 int)server cos_serveroptions(FORMAT 'text', DELIMITER ',', FOLDERNAME '/txt/', distribute 'shard') WRITE ONLY;create foreign table f_orc(f1 int, f2 int)server cos_serveroptions(FORMAT 'orc', FOLDERNAME '/orc/', distribute 'shard') WRITE ONLY;
十四、pg 导入 COS
根据实际情况选择以下三种中的一种:
insert into f_csv select * from 内部表;insert into f_txt select * from 内部表;insert into f_orc select * from 内部表;