CREATE FOREIGN TABLE (SQL on other GaussDB(DWS))
功能描述
在当前数据库创建一个协同分析的外表,用来访问存储在协同分析其他集群数据库中的表。
该外表是只读的,只能用于查询操作,可直接使用SELECT语句查询其数据。
语法格式
1 2 3 4 5 6 7 |
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 [, ... ] ) } ]; |
参数说明
- IF NOT EXISTS
如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。
- table_name
外表的表名。
取值范围:字符串,要符合标识符的命名规范。
- column_name
外表中的字段名。可以选择多个字段名,中间用“,”隔开。
取值范围:字符串,要符合标识符的命名规范。
不允许在列上创建约束,也不允许创建索引。
- type_name
字段的数据类型。
不允许使用序列当作类型和使用自定义类型。
- SERVER server_name
server名称。允许用户自定义名称。
取值范围:字符串,要符合标识符的命名规范,并且该server必须存在。
- OPTIONS ( { option_name ' value ' } [, ...] )
用于指定外表数据的各类参数,参数类型如下所示。
- table_name:对应关联集群的表名,如果省略此option则认为该值和外表名字一样。
- schema_name:对应关联集群的schema,如果省略此option则认为该值和外表所在的schema一样。
- encoding:对应关联集群的编码,如果省略此option则使用关联集群的数据库编码。
- READ ONLY
外表只读。
- DISTRIBUTE BY ROUNDROBIN
显示指定外表为ROUNDROBIN分布方式。
- TO { GROUP groupname | NODE ( nodename [, ... ] ) }
TO GROUP目前不支持使用。TO NODE主要供内部扩容工具使用,一般用户不应使用。
示例
- 创建名称为server_remote的外部服务器,对应的foreign data wrapper为GC_FDW。
1
CREATE SERVER server_remote FOREIGN DATA WRAPPER GC_FDW OPTIONS (address '10.10.0.100:25000,10.10.0.101:25000',dbname 'test', username 'test', password '{Password}');
在可选项options里面写入了关联集群CN对应的IP地址及端口号。这里推荐使用填写一个LVS的地址或者多个CN的地址。
- 创建名称为region的外表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
DROP FOREIGN TABLE IF EXISTS region; 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' );
- 查看创建的外表region:
1
\d+ region