DolphinDB学习(2):增删改查数据表(分布式表的基本操作)

文章目录

  • 创建数据表
    • [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从创建数据库到使用数据表有下面几个流程:

  1. 创建数据库:db=database(dbPath, VALUE, 2000.01M..2001.12M)

  2. 创建一个数据表(也叫内存表):

    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列:

    sql 复制代码
    myPartitionedTable = db.createPartitionedTable(myTable, `DBTable, `month)
  3. 将原来的内存表的数据表迁移到分布式数据表中myPartitionedTable.append!(myTable)

    这样才算从数据库中添加完成一个数据表,可以查询一下分布式数据表的内容:

    sql 复制代码
    select * 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;

总的来说创建一个数据表的总流程就是:

  1. 有一个数据库
  2. 有一个想要保存的数据表someTable
  3. 参考数据表someTable的格式,使用数据库.createPartitionedTable()创建一个数据表,叫有数据库罩着的someTable
  4. someTable的数据迁移到创建到有数据库罩着的someTable数据表里
  5. 之后所有外部访问数据库就是使用这个有数据库罩着的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:最后一行结尾不能有逗号","
    )

这里有几个要点:

  1. 第一行数据要与 "table(" 在同一行
  2. 最后一行结尾不能有逗号","

得到的结果:

3. 在已有的数据表中追加新的数据

上面的例子中myPartitionedTable.append!(myTable)就是把myTable中的数据追加到myPartitionedTable中,而在一个已有数据表的基础上添加数据有三个步骤:

  1. 从数据库中拿到想要追加的那个表
  2. 把待追加的外部的数据源,转换为内存表table
  3. 使用数据库中的表.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
相关推荐
回家路上绕了弯11 小时前
深入浅出:如何设计一个可靠的分布式 ID 生成器
分布式·后端
电子云与长程纠缠11 小时前
Blender入门学习04 - 材质
学习·blender
文火冰糖的硅基工坊11 小时前
[人工智能-大模型-21]:“AI 编程工作流”模板(含 prompt 示例)
人工智能·科技·学习·大模型·prompt
讽刺人生Yan12 小时前
RFSOC学习记录(六)混频模式分析
学习·fpga·rfsoc
敲敲了个代码12 小时前
UniApp 多页面编译优化:编译时间从10分钟到1分钟
开发语言·前端·javascript·学习·uni-app
Rattenking12 小时前
【CSS】---- 图形函数详解
笔记·学习·flutter
.小小陈.13 小时前
数据结构3:复杂度
c语言·开发语言·数据结构·笔记·学习·算法·visual studio
立志成为大牛的小牛13 小时前
数据结构——二十四、图(王道408)
数据结构·学习·程序人生·考研·算法
red_redemption13 小时前
自由学习记录(108)
学习
阿什么名字不会重复呢13 小时前
Hadoop报错 Couldn‘t find datanode to read file from. Forbidden
大数据·hadoop·分布式