当前位置: 首页 > 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

相关文章:

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

文章目录 创建数据表1. 创建数据表全流程2. 核心:创建table3. 在已有的数据表中追加新的数据 数据表自身的操作1. 查询有哪些数据表2. 删除某张数据表3. 修改数据表的名称 博客里只介绍最常见的分区表(createPartitionedTable)的创建方法&…...

100天精通Python(实用脚本篇)——第114天:基于smtplib与email模块实现收发邮件(附上多个案例代码)

文章目录 专栏导读案例说明一、smtplib模块是什么?1.1 模块介绍1.2 SMTP参数说明1.3 SMTP常用方法 二、email模块是什么?1.1 模块介绍1.2 常用类说明 三、案例实战3.1 获取授权码3.2 代码步骤3.3 发送文本格式邮件3.4 发送图片格式邮件3.5 发送指定文件夹…...

redisTemplate.opsForValue()

redisTemplate ​在Spring Data Redis中,redisTemplate 是一个非常重要的组件,它为开发者提供了各种操作 Redis 的方法。对于 opsForValue() 方法,它是用来获取一个操作字符串值的操作对象。这意味着你可以使用它来执行各种字符串相关的操作…...

多线程事务如何回滚?

背景介绍 1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败&am…...

医院如何筛选安全合规的内外网文件交换系统?

医院内外网文件交换系统是专为医疗机构设计的,用于在内部网络(内网)和外部网络(外网)之间安全、高效地传输敏感医疗数据和文件的解决方案。这种系统对于保护患者隐私、遵守医疗数据保护法规以及确保医疗服务的连续性和…...

C51 单片机学习(一):基础外设

参考 51单片机入门教程 1. 单片机简介 1.1 定义 单片机(Micro Controller Unit,简称 MCU) 内部集成了 CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(依靠传感器)、处…...

Docker容器引擎镜像创建

目录 一、镜像的创建 (一)基于现有镜像创建 1.启动一个镜像,在容器里做修改 2.将修改后的容器提交为新的镜像 (二)基于本地模板创建 (三)基于Dockerfile 创建 1.联合文件系统&#xff08…...

布尔逻辑与逻辑门

计算机为什么使用二进制: 计算机的元器件晶体管只有 2 种状态,通电(1)& 断电(0),用二进制可直接根据元器件的状态来设计计算机。而且,数学中的“布尔代数”分支,可以…...

opencv-python计算视频光流

光流基本概念 光流表示的是相邻两帧图像中每个像素的运动速度和运动方向。具体:光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系&#xf…...

Spring 中获取 Bean 对象的三种方式

目录 1、根据名称获取Bean 2、根据Bean类型获取Bean 3、根据 Bean 名称 Bean 类型来获取 Bean(好的解决方法) 假设 Bean 对象是 User,并存储到 Spring 中,注册到 xml 文件中 public class User {public String sayHi(){retur…...

centos系统安装Ward服务器监控工具

简介 Ward是一个简约美观多系统支持的服务器监控面板 安装 1.首先安装jdk yum install java-1.8.0-openjdk-devel.x86_64 2.下载jar wget 3.启动 java -jar ward-1.8.8.jar 体验 浏览器输入 http://192.168.168.110:4000/ 设置服务名设置为:myserver 端口号:5000 点击…...

计算机网络-数据交换方式(电路交换 报文交换 分组交换及其两种方式 )

文章目录 为什么要数据交换?总览电路交换电路交换的各个阶段建立连接数据传输释放连接 电路交换的特点电路交换的优缺点 报文交换报文交换流程报文交换的优缺点 分组交换分组交换流程分组交换的优缺点 数据交换方式的选择分组交换的两种方式数据报方式数据报方式的特…...

【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]

阅读导航 引言一、设计模式概念(了解)二、单例模式1. 饿汉模式(1)概念(2)模拟实现(3)优缺点(4)适用场景 2. 懒汉模式(1)概念&#xff…...

【创建vue项目的两种方式】

Vue环境搭建 NodeJs安装包安装淘宝镜像 环境搭建webpack安装全局安装vue/cli查看模板创建项目1.webpack2. vue-cli NodeJs安装包 下载链接:官网链接 下载下来后,直接傻瓜式的安装即可。 通过在cmd控制台输入以下命令查看是否安装成功 node -v因为适配某…...

2. HarmonyOS应用开发DevEcoStudio准备-1

2. HarmonyOS应用开发DevEcoStudio准备-1 下载 DevEco Studio 进入HUAWEI DevEco Studio产品页产品页。 单击下载列表右侧的按钮,下载 DevEco Studio。 安装 DevEco Studio 下载完成后,双击下载的 deveco-studio-xxxx.exe,进入 DevEco St…...

《二叉树》——3(层序遍历)

目录 前言: 层序遍历: 解析: 前言: 本文主讲链式二叉树的层序遍历,在前面的张篇blog我们初步实现了链式二叉树递归部分的内容,对于递归算法的学习和思维方式我们仍然需要不断加强,所以将对链式二叉树进行…...

HarmonyOS应用开发者基础认证考试答案

HarmonyOS应用开发者基础认证考试答案 一、判断题 1.Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 2.所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide…...

【前端素材】bootstrap3 实现地产置业公司source网页设计

一、需求分析 地产置业公司的网页通常是该公司的官方网站,旨在向访问者提供相关信息和服务。这些网页通常具有以下功能: 公司介绍:网页通常包含有关公司背景、历史、核心价值观和使命等方面的信息。此部分帮助访问者了解公司的身份和目标。 …...

C++ 数论相关题目 博弈论 Nim游戏

给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 问如果两人都采用最优策略,先手是否必胜。 输入格式…...

机器学习---无偏估计

1. 如何理解无偏估计 无偏估计:就是我认为所有样本出现的概率⼀样。 假如有N种样本我们认为所有样本出现概率都是 1/N。然后根据这个来计算数学期望。此时的数学期望就是我们平常讲 的平均值。数学期望本质就 是平均值。 2. 无偏估计为何叫做“无偏”&#xff1…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...