getDBTableDDL
首发版本:3.00.6
语法
getDBTableDDL(dbHandle,tableName)
详情
获取目标数据库中指定表的建表语句。
注:
-
目标数据库必须是分布式数据库。
-
满足以下至少一个条件的用户才能获取建表语句:
-
用户是 DolphinDB 管理员(admin)。
-
用户拥有目标数据库的管理权限(DB_MANAGE)。
-
用户是目标数据库的所有者(DB_OWNER)。
-
用户拥有目标表的读(TABLE_READ)、写入(TABLE_WRITE)、插入(TABLE_INSERT)、更新(TABLE_UPDATE)或删除(TABLE_DELETE)权限。
-
参数
dbHandle 字符串标量或数据库对象,指定目标数据库。
tableName 字符串标量,指定目标表。
返回值
字符串标量,表示建表语句。
例子
例 1:创建 dfs://olap_table 数据库和 pt 分区表,获取建表语句,该语句可直接使用 runScript 执行。以下示例中,两次建表后的表结构(schema1 和 schema2)完全一致。
dbName="dfs://olap_table"
db=database(dbName, VALUE, 1..5, engine="OLAP")
schematb = table(1:0, `id`val`ts, [INT, DOUBLE, TIMESTAMP])
pt=createPartitionedTable(db, schematb, `pt, `id)
schema1=pt.schema()
DDL=getDBTableDDL(db, "pt")
DDL
/*
输出:
create table "dfs://olap_table"."pt"(
id INT,
val DOUBLE,
ts TIMESTAMP
)
partitioned by id
*/
dropTable(db,"pt")
runScript(DDL)
schema2=(loadTable("dfs://olap_table", "pt")).schema()
例 2:创建 test 数据目录、名为 olap_table 的 schema 以及 pt 分区表,获取建表语句,该语句可直接使用
runScript 执行。以下示例中,两次建表后的表结构(schema1 和
schema2)完全一致。if(!existsCatalog("test")){
createCatalog("test")
}
if(size(exec schema from getSchemaByCatalog("test") where schema = "olap_table") > 0){
dropSchema("test", "olap_table")
}
use catalog test
create database olap_table partitioned by VALUE(1..5), engine="OLAP"
go
create table olap_table.pt (
id INT,
val DOUBLE,
ts TIMESTAMP
)
partitioned by id
schema1=olap_table.pt.schema()
dbUrl = exec dbUrl from getSchemaByCatalog("test") where schema = "olap_table"
db=database(dbUrl[0])
DDL=getDBTableDDL(db, "pt")
DDL // 输出中的 DFS 路径是随机生成的,仅供参考
/*
输出:
'create table "dfs://__test_olap_table_1781024086061__"."pt"(
id INT,
val DOUBLE,
ts TIMESTAMP
)
partitioned by id'
*/
dropTable(db,"pt")
runScript(DDL)
schema2=olap_table.pt.schema()相关函数:database、createPartitionedTable、runScript、getDatabaseDDL
