TDengine 新功能 从 CSV 批量创建子表

1. 背景

我们在从一些数据源(比如关系型数据库)批量导入数据前,我们可能需批量创建出所需子表。TDengine 引擎从 v3.3.3.0 版本开始,提供了通过 CSV 文件批量创建子表的功能,使用者只要按约定的格式生成 CSV 文件,使用 CSV 批量建表语句,便可自动从 CSV 中轻松创建出海量子表。

2. SQL 命令

批量建表语句仍然使用 CREATE TABLE 语句实现,并扩展了新命令关键词,语法如下:

CREATE TABLE [IF NOT EXISTS] USING stb_name (field1_name [, field2_name] ...) FILE csv_file_path;

  1. if not exists

    1. 如不指定,如果尝试建立已经存在的表会导致该命令报错并退出

    2. 若指定,如果尝试建立已经存在的表将忽略错误并继续执行

    3. 默认不指定

  2. stb_name:引用的超级表名称

    1. 依据该超级表的 schema 创建子表

    2. 该超级表必须已经建立

  3. field_name:表名和一个或多个标签名的列表

    1. 列表顺序与 CSV 文件各列内容顺序一致

    2. 列表中 不允许存在重复项,否则报错并退出

    3. 列表中 必须包含 tbname,否则报错并退出

    4. 列表中可包含零个或多个标签列,但必须是所引用的超级表中已经存在的标签列

    5. 未包含在该列表中的标签,其值将被设置为 NULL

  4. csv_file_path:csv 文件路径

3. CSV 文件格式

  1. CSV 文件中每行必须包含与 SQL 语名中的字段列表中所指定的数量相同的列,由 ',' 分隔,如果列数不匹配则报错退出

  2. CSV 文件中的注释行会被自动忽略,不做处理

  3. CSV 文件各字段的值与所对应的标签的类型必须匹配,否则报错并退出。

    1. 字符串类型值 需使用 单引号 ' 或 双引号 " 引用

    2. 布尔类型值 可匹配 0/1、true/false、以及 ‘true’/'false' 等常见值

  4. CSV 文件中对应 tbname 的值必须符合 TDengine 表名命名规则

4. 使用场景

4.1 三种组合八个场景

场景

数据行含 普通列

数据行含 子表名列

数据行含 标签列

说明

状态

场景一

  1. 导入时序数据

  2. 通过 SQL 语句指定超级表名

  3. 如果子表存在,不更新标签值

  4. 如果子表不存在,创建子表,标签值取子表的第一行数据

INSERT INTO tablename file ...

已支持

场景二

  1. 导入时序数据

  2. 通过 SQL 语句指定超级表名

  3. 如果子表存在,不更新标签值

  4. 如果子表不存在,创建子表,标签值设置为 NULL

INSERT INTO tablename file ...

已支持

场景三

-

不支持

场景四

  1. 导入时序数据

  2. 通过 SQL 语句指定子表名

  3. 如果子表存在,不更新标签值

  4. 如果子表不存在,创建子表,标签值设置为 NULL

INSERT INTO tablename file ...

已支持

场景五

  1. 不导入时序数据,仅建表

  2. 通过 SQL 语句指定超级表名

  3. 如果子表存在,不做任何处理

  4. 如果子表不存在,创建子表,标签值取子表的第一行数据

本功能支持

场景六

  1. 不导入时序数据,仅建表

  2. 通过 SQL 语句指定超级表名

  3. 如果子表存在,不做任何处理

  4. 如果子表不存在,创建子表,标签值设置为 NULL

本功能支持

场景七

-

不支持

场景八

-

-

4.2 场景示例

示例超级表结构如下:

CREATE TABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location varchar(64), groupId int);

场景一:

CSV 数据:

导入命令:

INSERT INTO meters (ts, current, voltage, phase, location, groupId, tbname) FILE 'auto1.csv';

场景二:

CSV 数据:

导入命令:

INSERT INTO meters (ts, current, voltage, phase, tbname) FILE 'auto2.csv';

场景三(不支持)

场景四:

CSV 数据:

导入命令:

INSERT INTO d1001 (ts, current, voltage, phase) FILE 'auto4.csv';

场景五:

CSV 数据:

导入命令:

CREATE TABLE USING meters (location, groupId, tbname)  FILE 'auto5.csv';

场景六:

CSV 数据:

导入命令:

CREATE TABLE USING meters (tbname)  FILE 'auto6.csv';

5. 约束和限制

配置文件中的maxInsertBatchRows ,可控制每批次从 csv 文件中解析的行数,同时影响本功能向 server 端发送的数据包的大小。

若导入过程中遭遇 DB error: Invalid message len,需减小该参数大小。

名称

功能

默认值

参考值

maxInsertBatchRows

每批次从 csv 文件中解析的行数

1 000 000

maxInsertBatchRows * 平均行数据量 / nVgroup < 1M

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

帮忙摆脱焦虑的「自洽」逻辑

每个人都像是一座孤岛&#xff0c;承载着各自的梦想、恐惧与困惑。外界的解读、评判和定义有时如同环岛的潮水&#xff0c;时而温柔轻拂&#xff0c;时而猛烈拍打&#xff0c;让人在自我认知中漂泊不定。 当置于艰难处境&#xff0c;被焦虑、抑郁等负面情绪不断吞噬&#xff0c…

二叉搜索树 平衡树(c嘎嘎版)

定义: 二叉搜索树是一种二叉树的树形数据结构,其定义如下: 空树是二叉搜索树。 若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。 若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。 二叉搜索树的左右子树均为…

旅游系统旅游小程序PHP+Uniapp

旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】

使用winscp从windows访问Ubuntu进行文件传输

Ubuntu 系统上的准备工作 • 安装 SSH 服务器&#xff1a; 确保 Ubuntu 系统上已经安装了 SSH 服务器。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt update sudo apt install openssh-server • 启动 SSH 服务&#xff1a; 确保 SSH 服务正在运行&a…

Day10 苍穹外卖项目 订单搜索、各个状态的订单统计、查询订单详细、接单、拒单、取消订单、派送订单、完成订单

目录 1.订单搜索 1.1 需求分析和设计 1.2 接口设计 1.2 代码实现 1.2.1 admin/OrderController 1.2.2 OrderService 1.2.3 OrderServiceImpl 2.各个状态的订单数量统计 2.1 需求分析和设计 2.2 接口设计 2.3 代码实现 2.3.1 admin/OrderController 2.3.2 OrderService 2.3.3 Or…

智慧商城:登录页静态布局,axios请求数据切换图形验证

登录页静态布局 在src目录下新建 styles&#xff0c;主要用于 存放公共样式。在该文件夹下新建common.less文件&#xff0c;并将其在main.js中引入 将图片拷贝到src文件夹下的 assets文件夹下 完成静态布局 点击左箭头能返回到首页 所有组件头部返回左箭头颜色都是一样的&#…

uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!

**提要&#xff1a;**近段时间我们收到多个康复机构用户&#xff0c;咨询AI运动识别插件是否可以应用于肢力运动受限患者的康复锻炼中来&#xff0c;插件是可以应用到AI康复锻炼中的&#xff0c;今天小编就为您介绍一下AI运动识别插件在康腹锻炼中的应用场景。 一、康复机构的应…

怎样设计校园物联网智慧用电平台?

安科瑞戴婷 Acrel-Fanny 相关背景 安全用电历来都是学校安全工作的一个重点&#xff0c;然而每年因此发生的人身伤害以及火灾事故却在继续着&#xff0c;究其原因&#xff0c;主观上是我们的防患意识淡薄&#xff0c;客观上则是由于学生在宿舍使用违规电器、乱拉电线造成的。…

STM32F405 + CubeMX - 产生互补PWM波,中心对齐模式1 + PWM模式2(FOC算法专用)

导言 在FOC算法里&#xff0c;SVPWM用于产生三相PWM波给电机。为了生成SVPWM波形&#xff0c;STM32的高级定时器TIM使用互补PWM的中心对齐模式1可以很好地实现。 如上图所示&#xff0c;按照后面的笔记来配置TIM1后&#xff0c;可以产生的互补PWM波形。 我们期望的SVPWM&…

【Excel】单元格分列

目录 分列&#xff08;新手友好&#xff09; 1. 选中需要分列的单元格后&#xff0c;选择 【数据】选项卡下的【分列】功能。 2. 按照分列向导提示选择适合的分列方式。 3. 分好就是这个样子 智能分列&#xff08;进阶&#xff09; 高级分列 Tips&#xff1a; 新手推荐基…

助力 Tuanjie OpenHarmony 开发:如何使用工具包 Hilog 和 SDK Kits Package?

随着团结引擎从 1.0.0 迭代至 1.3.0&#xff0c;越来越多的开发者开始使用团结引擎开发 OpenHarmony 应用。 在开发的过程中&#xff0c;我们也收到了大量反馈&#xff0c;尤其是在日志、堆栈和性能数据方面&#xff0c;这些信息对开发和调试过程至关重要。同时&#xff0c;我…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private int ret;//返回周结果private int path;//枚举一个元素就异或进去public int subsetXORSum(int[] nums) {dfs(nums, 0);return ret;} private void dfs(int[] nums, int pos){ret path;for(int i pos; i <…

详解排序几大算法

一、插入排序 基本思想&#xff1a; 直接插入排序是一种简单的插入排序算法&#xff0c;其基本思想是&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列。 步骤&#x…

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者&#xff1a;杨兰馨&#xff08;楠瑆&#xff09; 背景 2024 年 10 月 22 日&#xff0c;华为正式发布了原生鸿蒙操作系统&#xff08;HarmonyOS NEXT&#xff09;。原生鸿蒙实现了系统底座全部自研&#xff0c;系统的流畅度、性能、安全特性等方面显著提升&#xff0c;也…

嵌入式驱动开发详解17(CAN驱动开发)

文章目录 前言CAN简介CAN收发器CAN协议讲解电气特性传输协议数据帧遥控帧错误帧过载帧帧间隔 同步矫正 CAN控制器CAN控制器模式CAN接收器CAN波特率 CAN设备树分析CAN测试后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发&#xff0c;但是由于部分模块的驱动框架过于复…

计算机游戏运行时常见问题解析:d3dx9_43.dll丢失的真相与修复指南

游戏运行时d3dx9_43.dll缺失问题全解析 在计算机游戏的探险之旅中&#xff0c;d3dx9_43.dll文件缺失常成为玩家的绊脚石。此DLL文件是DirectX 9的关键组件&#xff0c;对图形渲染至关重要。以下&#xff0c;我们将深入剖析其丢失原因&#xff0c;并提供精简有效的修复策略。 …

CSS(13):2D

一.2D转换之移动translate 2D移动是2D转换里面的一种功能&#xff0c;可以改变元素在页面中的位置&#xff0c;类似定位。 transform:translate(x,y);&#xff08;里面可以用到参数%&#xff0c;是相对于自身宽度和高度来计算的&#xff09; transform:translateX(n); tran…

AI 赋能:医学科研审稿邀请的优化之道

在医学科研这座宏伟的知识殿堂中&#xff0c;审稿邀请是保障学术成果质量的关键环节&#xff0c;审稿邀请犹如一扇关键之门&#xff0c;连接着科研成果与专业评审&#xff0c;决定着学术智慧的传承与升华。如今&#xff0c;AI 技术恰似一把神奇的钥匙&#xff0c;悄然插入这扇门…

如何搭建Hexo博客,并发布到github上

1、安装好git 2、安装好npm、node 3、切换npm的源&#xff0c;现在阿里的cnpm不行了&#xff0c;要切换成新的&#xff1a; npm config set registry https://registry.npmmirror.com npm config get registry4、安装hexo-cli npm install -g hexo-cli查看是否安装成功&#…

React,Antd实现文本输入框话题添加及删除的完整功能解决方案

最终效果就是实现该输入框: 添加话题时,话题自动插入到输入框前面多文本输入框左侧间距为话题的宽度多行文本时,第二行紧接开头渲染删除文本时,如果删除到话题,再次删除,话题被删除首先构造div结构const [hashtag, setHashtag] = useState(""); // 话题内容con…