当前位置: 首页 > news >正文

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

文章目录

  • 创建数据表
    • 1. 创建数据表全流程
    • 2. 核心:创建table
    • 3. 在已有的数据表中追加新的数据
  • 数据表自身的操作
    • 1. 查询有哪些数据表
    • 2. 删除某张数据表
    • 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. 创建一个数据表(也叫内存表):

    // 生成一个随机的内存表数据,这是第一种构造数据表的习惯
    randomN=5month=take(2020.01M..2023.12M, randomN)
    x=rand(1.0, randomN) // 生成随机数myTable=table(month, x) // 先构造好数据,再拼到数据表中select * from myTable
    

    得到如下表:
    在这里插入图片描述

    1. 基于db数据库创建一个分布式数据表,参考内存表myTable的格式,分区的依据是数据中的month列:
    myPartitionedTable = db.createPartitionedTable(myTable, `DBTable, `month)
    
  3. 将原来的内存表的数据表迁移到分布式数据表中myPartitionedTable.append!(myTable)

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

    select * from myPartitionedTable;
    

在这里插入图片描述

完整示例如下:

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的创建博主常用的构造方法是:

// 这是第二种构造数据表的习惯,也是博主最常用的方法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)把外部数据追加到原始数据表中

因此在已有的数据表中追加数据

// 步骤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,查询数据表里的表有以下两种方法

getDFSTablesByDatabase("dfs://myDB") // 查询某个分布式数据库中的表

或使用:

getTables(database("dfs://myDB"))

2. 删除某张数据表

比如删除数据库dfs://myDB的某张数据表someTable

db=database("dfs://myDB")
dropTable(db,"someTable");

3. 修改数据表的名称

比如修改数据库dfs://myDB的某张数据表someTable,改名为newSomeTable

db = database("dfs://myDB")
renameTable(db, "someTable", "newSomeTable")
select * from db.newSomeTable
http://www.lryc.cn/news/291387.html

相关文章:

  • 100天精通Python(实用脚本篇)——第114天:基于smtplib与email模块实现收发邮件(附上多个案例代码)
  • redisTemplate.opsForValue()
  • 多线程事务如何回滚?
  • 医院如何筛选安全合规的内外网文件交换系统?
  • C51 单片机学习(一):基础外设
  • Docker容器引擎镜像创建
  • 布尔逻辑与逻辑门
  • opencv-python计算视频光流
  • Spring 中获取 Bean 对象的三种方式
  • centos系统安装Ward服务器监控工具
  • 计算机网络-数据交换方式(电路交换 报文交换 分组交换及其两种方式 )
  • 【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
  • 【创建vue项目的两种方式】
  • 2. HarmonyOS应用开发DevEcoStudio准备-1
  • 《二叉树》——3(层序遍历)
  • HarmonyOS应用开发者基础认证考试答案
  • 【前端素材】bootstrap3 实现地产置业公司source网页设计
  • C++ 数论相关题目 博弈论 Nim游戏
  • 机器学习---无偏估计
  • C语言基础13
  • 【Java】Maven配置加载到全局
  • 右手螺旋线定则
  • 2024 高级前端面试题之 React 「精选篇」
  • OSPF协议解析及相关技术探索(C/C++代码实现)
  • 如何恢复已删除的照片?
  • VMware虚拟机安装macOS
  • API管理协作工具:Apipost
  • GPT-SoVITS 本地搭建踩坑
  • 【教学类-34-02】20240130纸尺2.0 (A4横版5条,刻度25*5=125CM,有图案)
  • iText操作pdf