在当前数据库创建一个协同分析的外表,用来访问存储在协同分析其他集群数据库中的表。
该外表是只读的,只能用于查询操作,可直接使用SELECT语句查询其数据。
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name
( [ { column_name type_name | LIKE source_table } [, ...] ] )
SERVER server_name
OPTIONS ( { option_name ' value ' } [, ...] )
[ READ ONLY ]
[ DISTRIBUTE BY {ROUNDROBIN} ]
[ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ];
如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。
外表的表名。
取值范围:字符串,要符合标识符的命名规范。
外表中的字段名。可以选择多个字段名,中间用“,”隔开。
取值范围:字符串,要符合标识符的命名规范。
说明:不允许在列上创建约束,也不允许创建索引。
字段的数据类型。
说明:不允许使用序列当作类型和使用自定义类型。
外表的server名字。允许用户自定义名字。
取值范围:字符串,要符合标识符的命名规范,并且这个server必须存在。
用于指定外表数据的各类参数,参数类型如下所示。
显示表是外表为只读。
显示指定外表为ROUNDROBIN分布方式。
TO GROUP目前不支持使用。TO NODE主要供内部扩容工具使用,一般用户不应使用。
--创建Server。
CREATE SERVER server_remote FOREIGN DATA WRAPPER GC_FDW OPTIONS (address '10.146.187.231:8000,10.180.157.130:8000' ,dbname 'test', username 'test', password 'Xx123456@');
说明:在可选项options里面写入了关联集群CN对应的IP地址及端口号。这里推荐使用填写一个LVS的地址或者多个CN的地址。
CREATE FOREIGN TABLE region
(
R_REGIONKEY INT4,
R_NAME TEXT,
R_COMMENT TEXT
)
SERVER
server_remote
OPTIONS
(
schema_name 'test',
table_name 'region',
encoding 'gbk'
);
--查看外表。
\d+ region
Foreign table "public.region"
Column | Type | Modifiers | FDW Options | Storage | Stats target | Description
-------------+---------+-----------+-------------+----------+--------------+-------------
r_regionkey | integer | | | plain | |
r_name | text | | | extended | |
r_comment | text | | | extended | |
Server: server_remote
FDW Options: (schema_name 'test', table_name 'region', encoding 'gbk')
FDW permition: read only
Has OIDs: no
Distribute By: ROUND ROBIN
Location Nodes: ALL DATANODES
--修改外表。
ALTER FOREIGN TABLE region ALTER r_name TYPE TEXT;
ALTER FOREIGN TABLE
ALTER FOREIGN TABLE region OPTIONS (SET schema_name 'test');
ALTER FOREIGN TABLE
--删除外表。
DROP FOREIGN TABLE region;
DROP FOREIGN TABLE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3131003/ ,如需转载,请注明出处,否则将追究法律责任。