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
相关推荐
eybk1 小时前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.941 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala
攻心的子乐1 小时前
Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
分布式·kafka
小林想被监督学习2 小时前
RabbitMQ 的7种工作模式
分布式·rabbitmq
守护者1703 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。3 小时前
Docker学习
java·开发语言·学习
Rinai_R3 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌3 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang3 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
初晴~3 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·