更新时间:2024-11-27 GMT+08:00

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主要供内部扩容工具使用,一般用户不应使用。

示例

  1. 创建名称为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的地址。

  2. 创建名称为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'
    );
    
  3. 查看创建的外表region:
    1
    \d+ region