YMatrix 文档
快速上手
集群部署
SQL参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
工具指南
CREATE FOREIGN TABLE
定义一个新的外表。
概要
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
[, ... ]
] )
SERVER server_name
[ OPTIONS ( [ mpp_execute { 'master' | 'any' | 'all segments' } [, ] ] option 'value' [, ... ] ) ]
其中column_constraint为:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
DEFAULT default_expr }
描述
CREATE FOREIGN TABLE在当前数据库中创建一个新的外部表。 创建外部表的用户将成为其所有者。
如果您对表名称进行模式限定(例如,CREATE FOREIGN TABLE myschema.mytable ...), 则 YMatrix 数据库将在指定模式中创建表。 否则,将在当前模式中创建外部表。 外部表的名称必须与同一模式中任何其他外部表,表,序列,索引或视图的名称不同。
因为CREATE FOREIGN TABLE自动创建一种数据类型, 该数据类型表示与外部表的一行相对应的复合类型,所以外部表不能与同一模式中的任何现有数据类型具有相同的名称。
要创建外部表,您必须在外部服务器上具有USAGE特权, 并且对表中使用的所有列类型都具有USAGE特权。
参数
IF NOT EXISTS
- 如果已经存在同名关系,则不要抛出错误。 在这种情况下,YMatrix 数据库会发出通知。 请注意,不能保证现有关系类似于将要创建的关系。
table_name
- 要创建的外部表的名称(可以由模式指定)。
column_name
- 在新的外部表中创建的列的名称。
data_type
- 列的数据类型,包括数组说明符。
NOT NULL
- 该列不允许包含空值。
NULL
- 该列允许包含空值。这是默认值。
提供此子句仅是为了与非标准SQL数据库兼容。不建议在新应用中使用它。
DEFAULT default_expr
- DEFAULT子句为其定义所在的列分配默认值。 该值是任何无变量表达式;YMatrix 数据库不允许子查询和对当前表中其他列的交叉引用。 默认表达式的数据类型必须与列的数据类型匹配。
YMatrix 数据库在未为列指定值的任何插入操作中使用默认表达式。 如果列没有默认值,则默认值为null。
server_name
- 用于外部表的现有服务器的名称。
OPTIONS ( option 'value' [, ... ] )
- 新外部表或其列之一的选项。 虽然选项名称必须唯一,但表选项和列选项可能具有相同的名称。 选项名称和值是特定于外部数据包装程序的。 YMatrix 数据库使用外部数据包装程序的validator_function验证选项和值。
mpp_execute { 'master' | 'any' | 'all segments' }
- 一个选项,用于标识外部数据包装器从其请求数据的主机:
- master (默认设置)- 从master主机请求数据。
- any — 向master主机或任一segment请求数据,具体取决于哪条路径的成本更低。
- all segments — 从所有segment中请求数据。 要支持此选项值,外部数据包装器必须具有将segment与数据匹配的策略。
- 外部表mpp_execute选项和受支持的特定模式的使用是特定于外部数据包装器的。
示例
使用名为film_server的服务器创建一个名为films的外部表:
CREATE FOREIGN TABLE films (
code char(5) NOT NULL,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
)
SERVER film_server;
兼容性
CREATE FOREIGN TABLE基本上符合SQL标准; 但是,与CREATE TABLE一样,YMatrix 数据库允许NULL约束和零列外部表。 指定默认值的功能是 YMatrix 数据库扩展,以及mpp_execute选项。