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=5
    
    month=take(2020.01M..2023.12M, randomN)
    x=rand(1.0, randomN) // 生成随机数
    
    myTable=table(month, x) // 先构造好数据,再拼到数据表中
    
    select * from myTable
    

    得到如下表:
    DolphinDB学习(2):增删改查数据表(分布式表的基本操作)_第1张图片

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

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

    select * from myPartitionedTable;
    

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

完整示例如下:

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. 最后一行结尾不能有逗号","

得到的结果:
DolphinDB学习(2):增删改查数据表(分布式表的基本操作)_第3张图片

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

你可能感兴趣的:(数据库,学习,分布式)