CREATE EXTERNAL TABLE … ENGINE = DATASTREAM¶
通过
ENGINE = DATASTREAM子句创建从远程 DataStream(jstfu)服务读取数据的 MatrixOne 外部表。该表只读,必须提供server、port、table选项,并支持可选的recheck与apikey选项。
描述¶
CREATE EXTERNAL TABLE ... ENGINE = DATASTREAM 将 MatrixOne 外部表映射到远程 DataStream(jstfu)服务提供的数据源。查询该表时,MatrixOne 会按需从服务端流式读取数据。该表为只读:支持 SELECT,拒绝 INSERT、UPDATE、DELETE 写入。
该语句必须提供 server、port、table 选项。可选的 recheck 选项控制下推到服务端的谓词是否在本地重新执行;可选的 apikey 选项用于向服务端出示共享密钥。
语法¶
CREATE EXTERNAL TABLE [IF NOT EXISTS] [db.]table_name (
column1 type1,
column2 type2,
...
) ENGINE = DATASTREAM [WITH ("option" = 'value' [, "option" = 'value'] ...)];
参数¶
选项 |
是否必填 |
说明 |
|---|---|---|
|
是 |
DataStream 服务端的主机名或 IP 地址。 |
|
是 |
DataStream 服务端的端口号。必须是合法端口号,非数字值会被拒绝。 |
|
是 |
服务端上要读取的数据源名称。 |
|
否 |
是否在本地重新执行下推的谓词。 |
|
否 |
可选,向服务端出示的共享密钥。使用 |
使用说明¶
只读:DataStream 外部表拒绝
INSERT、UPDATE、DELETE,报错cannot insert/update/delete from external table。选项校验:选项在创建表时校验。重复、未知或非法的选项会以
invalid input错误拒绝。密钥脱敏:
SHOW CREATE TABLE会往返输出 DDL,但不会显示apikey的值。过滤条件重校验:无法下推的谓词始终在本地执行,即使
recheck设为false也会生效。
示例¶
以下示例创建两个 DataStream 外部表,通过 SHOW CREATE TABLE 查看其 DDL,并演示缺少必填选项时的校验错误:
DROP DATABASE IF EXISTS datastream_doc_demo;
CREATE DATABASE datastream_doc_demo;
USE datastream_doc_demo;
CREATE EXTERNAL TABLE ext_file (
col1 INT,
col2 DATETIME,
col3 VARCHAR(50),
col4 TEXT
) ENGINE = DATASTREAM WITH ('server' = '127.0.0.1', 'port' = '4444', 'table' = 'file_numbers');
SHOW CREATE TABLE ext_file;
CREATE EXTERNAL TABLE ext_keyed (
col1 INT,
col2 DATETIME,
col3 VARCHAR(50),
col4 TEXT
) ENGINE = DATASTREAM WITH ('server' = '127.0.0.1', 'port' = '4444', 'table' = 'jdbc_numbers', 'recheck' = 'false', 'apikey' = 'top-secret');
SHOW CREATE TABLE ext_keyed;
-- Expected-Success: false
CREATE EXTERNAL TABLE ds_missing_port (a INT) ENGINE = DATASTREAM WITH ('server' = '127.0.0.1');
DROP DATABASE datastream_doc_demo;