删除数据库和表

DolphinDB 支持 dropDatabase 删除整个数据库或整个表。

在 DolphinDB 可以通过以下几个方法删除表中的数据:

  • dropTable:删除数据库中的表且不保留表结构。

  • truncate:删除数据库中的表,且保留表结构。

  • dropPartition:删除数据表的分区。

  • delete:删除指定条件的数据。

对比使用上述方法删除表所有数据的耗时:

// 建库
$ dbName="dfs://testdb"
$ if(existsDatabase(dbName)){
$         dropDatabase(dbName)
$ }
$ n=10000
$ ticker = rand(`MSFT`GOOG`FB`ORCL`IBM`PPT`AZH`ILM`ANZ,n);
$ id = rand(`A`B`C, n)
$ x=rand(1.0, n)
$ t=table(ticker, id, x)
$ db=database(directory=dbName, partitionType=HASH, partitionScheme=[STRING, 5])

// 创建用于对比的数据表
$ pt0 = db.createPartitionedTable(t, `pt, `ticker)
$ pt0.append!(t)
$ pt1 = db.createPartitionedTable(t, `pt1, `ticker)
$ pt1.append!(t)
$ pt2 = db.createPartitionedTable(t, `pt2, `ticker)
$ pt2.append!(t)
$ pt3 = db.createPartitionedTable(t, `pt3, `ticker)
$ pt3.append!(t)

// delete 语句删除(保留表结构)
$ timer delete from pt0
Time elapsed: 795.314 ms

// dropPartition 遍历分区删除(保留表结构)
$ timer for(i in 0:5){ if(existsPartition(dbName + "/Key"+ string(i), `pt1))dropPartition(dbHandle=db, partitionPaths="/Key"+ string(i), tableName=`pt1)}
Time elapsed: 11.724 ms

// truncate 函数删除(保留表结构)
$ timer truncate(dbName, "pt2")
Time elapsed: 5.278 ms

// dropTable 函数删除(不保留表结构)
$ timer dropTable(db, "pt3")
Time elapsed: 5.582 ms