getDatabaseDDL
首发版本:3.00.6
语法
getDatabaseDDL(dbHandle)
详情
获取目标数据库的建库语句。
注:
-
目标数据库必须是分布式数据库。
-
满足以下至少一个条件的用户才能获取建库语句:
-
用户是 DolphinDB 管理员(admin)。
-
用户拥有目标数据库的管理权限(DB_MANAGE)。
-
用户是目标数据库的所有者(DB_OWNER)。
-
用户拥有目标数据库的读(DB_READ)、写入(DB_WRITE)、插入(DB_INSERT)、更新(DB_UPDATE)、或删除(DB_DELETE)权限。
-
用户拥有目标数据库的对象创建(DBOBJ_CREATE)或删除(DBOBJ_DELETE)权限。
-
参数
dbHandle 字符串标量或数据库对象,指定目标数据库。
返回值
字符串标量,表示建库语句。
例子
例 1:创建 dfs://compoDB 数据库,获取其建库语句,该语句可直接使用 runScript 执行。以下示例中,两次建库后的数据库结构(schema1 和 schema2)完全一致。
dbDate=database(, VALUE, 2026.08.07..2026.08.11)
dbID=database(, RANGE, 0 50 100)
db=database("dfs://compoDB", COMPO, [dbDate, dbID])
schema1=db.schema()
DDL=getDatabaseDDL(db)
DDL
/*
输出:
'create database "dfs://compoDB" partitioned by VALUE(2026.08.07..2026.08.11), RANGE([0,50,100]), engine=OLAP, atomic=TRANS, chunkGranularity=TABLE'
*/
dropDatabase("dfs://compoDB")
runScript(DDL)
schema2=database("dfs://compoDB").schema()
例 2:创建 test 数据目录和名为 compoDB 的 schema,获取该 schema
对应数据库的建库语句,该语句可直接使用
runScript 执行。以下示例中,两次建库后的数据库结构(schema1 和
schema2)完全一致。if(!existsCatalog("test")){
createCatalog("test")
}
if(size(exec schema from getSchemaByCatalog("test") where schema = "compoDB") > 0){
dropSchema("test", "compoDB")
}
go
use catalog test
create database compoDB partitioned by VALUE(2026.08.07..2026.08.11), RANGE(0 50 100)
dbUrl = exec dbUrl from getSchemaByCatalog("test") where schema = "compoDB"
db=database(dbUrl[0])
schema1=schema(db)
DDL=getDatabaseDDL(db)
DDL // 输出中的 DFS 路径是随机生成的,仅供参考
/*
输出:
'create database "dfs://__test_compoDB_1781022930257__" partitioned by VALUE(2026.08.07..2026.08.11), RANGE([0,50,100]), engine=OLAP, atomic=TRANS, chunkGranularity=TABLE'
*/
dropDatabase(dbUrl[0])
runScript(DDL)
createSchema("test", dbUrl[0], "compoDB") // 将 DFS 数据库加入 test 数据目录
dbUrl = exec dbUrl from getSchemaByCatalog("test") where schema = "compoDB"
db=database(dbUrl[0])
schema2=schema(db)