创建FOREIGN DATA WRAPPER
teledb=# CREATE FOREIGN DATA WRAPPER datalake_fdw
HANDLER datalake_fdw_handler
VALIDATOR datalake_fdw_validator;
- CREATE FOREIGN DATA WRAPPER
- FOREIGN DATA WRAPPER名字可以自行设置。
创建成功的FOREIGN DATA WRAPPER可以通过查看系统表pg_foreign_data_wrapper是否存在。
teledb=# select * from pg_foreign_data_wrapper;
fdwname | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions
--------------+----------+------------+--------------+--------+------------
datalake_fdw | 10 | 16578 | 16579 | |
(1 row)
创建FOREIGN SERVER
teledb=# CREATE SERVER minio_foreign_server
teledb-# FOREIGN DATA WRAPPER datalake_fdw
teledb-# OPTIONS (host 'XXX', protocol 'minio', isvirtual 'false',
teledb(# ishttps 'false');
CREATE SERVER
- host:对象存储的endpoint,或者控制台的ip地址加端口,例如192.168.20.15:3421。
- protocol:对象存储的协议名称,可以为minio等。
- isvritual:按照virutal-host-style 还是 path-host-style 的方式来解析对象存储的主机,true为virutal-host-style。
- Ishttps:是否使用https协议。
创建成功的FOREIGN SERVER可以通过查看系统表pg_foreign_server是否存在。
teledb=# select * from pg_foreign_server;
srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions
-----------------------+----------+--------+---------+------------+--------+-------------------------------------------------------------------------
minio_foreign_server | 10 | 16582 | | | | {host=XXX,protocol=minio,isvirtual=false,ishttps=false}
(1 row)
创建USER MAPPING
teledb=# CREATE USER MAPPING FOR XXX
SERVER minio_foreign_server
OPTIONS (user 'XXX', accesskey 'XXXXXXXXXXXXX', secretkey 'XXXXXXXXXX');
CREATE USER MAPPING
- User:对象存储服务用户名(如有)。
- Accesskey:对象存储服务accesskey。
- Secretkey:对象存储服务secretkey。
创建成功的USERMAPPING可以通过查看系统表pg_user_mapping是否存在。
teledb=# select * from pg_user_mapping;
umuser | umserver | umoptions
--------+----------+---------------------------------------------------------
10 | 16583 | {user=XXX,accesskey=XXXXXXXXXXXXX,secretkey=XXXXXXXXXX}
(1 row)