create
New in version 1.30.17.
create 语句用于创建数据库或者数据表。其语法如下:
创建分布式数据库
该语句只支持创建分布式数据库。
create database directory partitioned by partitionType(partitionScheme),[partitionType(partitionScheme),partitionType(partitionScheme)],
[engine='OLAP'], [atomic='TRANS'], [chunkGranularity='TABLE']
在 create database 语句中,’partitionType’ 的个数表示分区的层级,最少1个,最多3个。当指定多个 ‘partitionType’ 时,表示组合分区。其它参数详情请参考函数 database。
创建数据表
该语句只支持创建普通内存表、分布式表和维度表。
create table dbPath.tableName (
schema[columnDescription]
)
[partitioned by partitionColumns] // 创建分布式表时需指定该语句
dbPath 字符串,表示数据库的路径。创建内存表时,可以不指定该参数。
tableName 可以为表示表名的字符串,或者表示表对象的变量。
schema 表结构,包含两列: columnName 和 columnType。
columnDescription 为列字段添加描述,以 keywords 方式进行添加。可包含以下两项:
comment 为列字段添加注释;
compress 指定压缩方式,包含以下两种方式:
“lz4”
“delta”
partitionColumns 字符串或字符串向量,表示分区列。对于组合分区,partitionColumns 是一个字符串向量。
create table 语句内的参数和详情说明请参考相关函数 createPartitionedTable / createTable。
创建临时内存表
New in version 1.30.21.
通过在 create
后添加关键字 local temporary (不区分大小写)以声明创建一张本地临时内存表。语法如下:
create local temporary table tableName(
schema
) [on commit preserve rows]
其中
tableName 表示表名的字符串,或者表示表对象的变量。
schema 表结构声明,包含两列: columnName 和 columnType。
on commit preserve rows 为可选关键字,不区分大小写,用于声明该表为会话级临时表。
注意:
DolphinDB
create table
语句创建的内存表即为本地临时表且仅对当前会话有效,因此该语句和create table
语句等价。系统暂不支持创建全局临时内存表及
on commit delete rows
关键字。
例子
(1) 创建内存表
$ create table tb(
id INT,
val DOUBLE
)
$ go; //必须使用 go 语句使上面的代码先解析执行,否则会报不识别变量 tb 的错误
$ tb.schema()
partitionColumnIndex->-1
chunkPath->
colDefs->
name typeString typeInt comment
---- ---------- ------- -------
id INT 4
val DOUBLE 16
(2) 创建分布式数据库
// 创建分布式数据库
$ if(existsDatabase("dfs://test")) dropDatabase("dfs://test")
$ create database "dfs://test" partitioned by VALUE(1..10), HASH([SYMBOL, 40]), engine='OLAP'
(3) 创建分布式表
$ create table "dfs://test"."pt"(
id INT,
deviceId SYMBOL,
date DATE[comment="time_col", compress="delta"],
value DOUBLE,
isFin BOOL
)
partitioned by ID, deviceID
$ pt = loadTable("dfs://test","pt")
$ pt.schema()
...
partitionColumnIndex->[0,1]
...
(4) 创建维度表
$ create table "dfs://test"."pt1"(
id INT,
deviceId SYMBOL,
date DATE[comment="time_col", compress="delta"],
value DOUBLE,
isFin BOOL
)
$ pt1 = loadTable("dfs://test","pt1")
$ pt1.schema()
...
partitionColumnIndex->-1
...
(5) 创建临时内存表
$ create local temporary table "tb" (
id SYMBOL,
val DOUBLE
) on commit preserve rows
$ tb.schema()
partitionColumnIndex->-1
chunkPath->
colDefs->
name typeString typeInt extra comment
---- ---------- ------- ----- -------
id SYMBOL 17
val DOUBLE 16