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()

相关函数:databasecreatePartitionedTablerunScriptgetDatabaseDDL