文章目录
- 创建数据表
-
- [1. 创建数据表全流程](#1. 创建数据表全流程)
- [2. 核心:创建table](#2. 核心:创建table)
- [3. 在已有的数据表中追加新的数据](#3. 在已有的数据表中追加新的数据)
- 数据表自身的操作
-
- [1. 查询有哪些数据表](#1. 查询有哪些数据表)
- [2. 删除某张数据表](#2. 删除某张数据表)
- [3. 修改数据表的名称](#3. 修改数据表的名称)
博客里只介绍最常见的分区表(createPartitionedTable)的创建方法,更多自定义的操作请参考:https://github.com/dolphindb/Tutorials_CN/blob/master/partitioned_in_memory_table.md
数据表支持的数据类型请查看:https://docs.dolphindb.cn/zh/help/200/DataTypesandStructures/DataTypes/index.html
创建数据表
1. 创建数据表全流程
DolphinDB从创建数据库到使用数据表有下面几个流程:
-
创建数据库:
db=database(dbPath, VALUE, 2000.01M..2001.12M)
-
创建一个数据表(也叫内存表):
sql// 生成一个随机的内存表数据,这是第一种构造数据表的习惯 randomN=5 month=take(2020.01M..2023.12M, randomN) x=rand(1.0, randomN) // 生成随机数 myTable=table(month, x) // 先构造好数据,再拼到数据表中 select * from myTable
得到如下表:
3. 基于db
数据库创建一个分布式数据表,参考内存表myTable
的格式,分区的依据是数据中的month
列:sqlmyPartitionedTable = db.createPartitionedTable(myTable, `DBTable, `month)
-
将原来的内存表的数据表迁移到分布式数据表中
myPartitionedTable.append!(myTable)
这样才算从数据库中添加完成一个数据表,可以查询一下分布式数据表的内容:
sqlselect * from myPartitionedTable;
完整示例如下:
sql
dbPath = "dfs://MyTestDB"
if (existsDatabase(dbPath)){ // 判断数据库是否存在
dropDatabase(dbPath) // 删除数据库
}
db=database(dbPath, VALUE, 2000.01M..2001.12M)
// 生成一个随机的内存表数据
randomN=5
month=take(2020.01M..2023.12M, randomN)
x=rand(1.0, randomN) // 生成随机数
myTable=table(month, x)
// 创建表
myPartitionedTable = db.createPartitionedTable(t, `DBTable, `month)
// 追加写入表数据
myPartitionedTable.append!(myTable)
select * from myPartitionedTable;
总的来说创建一个数据表的总流程就是:
- 有一个数据库
- 有一个想要保存的数据表
someTable
- 参考数据表
someTable
的格式,使用数据库.createPartitionedTable()创建一个数据表,叫有数据库罩着的someTable
- 把
someTable
的数据迁移到创建到有数据库罩着的someTable
数据表里 - 之后所有外部访问数据库就是使用这个
有数据库罩着的someTable
,原始的someTable
会在会话断开后消失在内存里
2. 核心:创建table
这个table的创建博主常用的构造方法是:
sql
// 这是第二种构造数据表的习惯,也是博主最常用的方法
table(1..5 as index, // 注意1:第一行数据要与 "table(" 在同一行
2..6 as x,
3..7 as y,
4..8 as z // 注意2:最后一行结尾不能有逗号","
)
这里有几个要点:
- 第一行数据要与 "table(" 在同一行
- 最后一行结尾不能有逗号","
得到的结果:
3. 在已有的数据表中追加新的数据
上面的例子中myPartitionedTable.append!(myTable)
就是把myTable
中的数据追加到myPartitionedTable
中,而在一个已有数据表的基础上添加数据有三个步骤:
- 从数据库中拿到想要追加的那个表
- 把待追加的外部的数据源,转换为内存表table
- 使用
数据库中的表.append!(外部数据table)
把外部数据追加到原始数据表中
因此在已有的数据表中追加数据
sql
// 步骤1:拿到数据库中的那个表
db = database("dfs://MyTestDB")
myPartitionedTable = loadTable(db,`DBTable)
// 步骤2:新增数据转换为内存表table,博主这里就创建新的table表作为要追加的数据
append_table = table(1..5 as index,
2..6 as x,
3..7 as y,
4..8 as z
)
// 步骤3:用.append!() 追加进去
myPartitionedTable.append!(append_table)
这样就算添加完成啦
数据表自身的操作
1. 查询有哪些数据表
对于一个已有的数据库:dfs://myDB
,查询数据表里的表有以下两种方法
sql
getDFSTablesByDatabase("dfs://myDB") // 查询某个分布式数据库中的表
或使用:
sql
getTables(database("dfs://myDB"))
2. 删除某张数据表
比如删除数据库dfs://myDB
的某张数据表someTable
sql
db=database("dfs://myDB")
dropTable(db,"someTable");
3. 修改数据表的名称
比如修改数据库dfs://myDB
的某张数据表someTable
,改名为newSomeTable
sql
db = database("dfs://myDB")
renameTable(db, "someTable", "newSomeTable")
select * from db.newSomeTable