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
相关推荐
kyrie_sakura1 分钟前
大模型学习18 大模型学习 - LangChain2_Model I/O
学习·自然语言处理
宝绿特塑业再生科技38 分钟前
板材收缩率不稳,户外家具装配尺寸为何对不上:从切割尺寸变化到接缝不一的系统性排查与对策
笔记·科技·学习·生活·户外家具·hdpe再生颗粒·hdpe
~城南花已开~1 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
wifi___1 小时前
Redis分布式锁
数据库·redis·分布式
我命由我123454 小时前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
外收内放4 小时前
FastAPI猜字谜实战(8):收官
开发语言·python·学习·fastapi
David猪大卫4 小时前
【C++修炼】STL容器—stack与queue
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
方方洛5 小时前
ray教程-15-RayServe与LLM服务
人工智能·分布式·机器学习
fengci.5 小时前
CTF2刷题记录(困难部分)
android·开发语言·前端·学习·php
qeen875 小时前
【Linux】磁盘读写文件原理及文件系统基本概念介绍
linux·运维·服务器·笔记·学习