当前位置: 首页 > news >正文

导出tdengine创建表语句

适配tdengine2.0版

主要借助taos命令的非交互模式进行输出

-s, --commands=COMMANDS    Commands to run without enter the shell.

还有\G 进行行转列输出完整内容。

下面是具体脚本

export_table_structures.sh

#!/bin/bash

# TDengine 连接信息
TDENGINE_HOST="localhost"
TDENGINE_PORT="6030"
TDENGINE_USER="root"
TDENGINE_PASSWORD="taosdata"
DATABASE_NAME="mydb"

# 输出文件
OUTPUT_FILE="table_structures.sql"

# 清空或创建输出文件
> $OUTPUT_FILE

# 获取超级表名
STABLES=$(taos -h $TDENGINE_HOST -P $TDENGINE_PORT -u $TDENGINE_USER -p$TDENGINE_PASSWORD -s "USE $DATABASE_NAME; SHOW STABLES;" | awk '
BEGIN { start=0 }
/^========/ { start=1; next }
/^Query OK/ { next }
start { print $1 }')

# 获取普通表名
TABLES=$(taos -h $TDENGINE_HOST -P $TDENGINE_PORT -u $TDENGINE_USER -p$TDENGINE_PASSWORD -s "USE $DATABASE_NAME; SHOW TABLES;" | awk '
BEGIN { start=0 }
/^========/ { start=1; next }
/^Query OK/ { next }
start { print $1 }')

# 输出超级表的创建语句
echo "-- 超级表结构" >> $OUTPUT_FILE
for STABLE_NAME in $STABLES; do
    # 跳过空行
    if [[ -n $STABLE_NAME ]]; then
        # 查询超级表的创建语句
        CREATE_SQL=$(taos -h $TDENGINE_HOST -P $TDENGINE_PORT -u $TDENGINE_USER -p$TDENGINE_PASSWORD -s "USE $DATABASE_NAME; SHOW CREATE TABLE $STABLE_NAME\G;" | grep "Create Table:" | cut -d':' -f2-)
        # 去除前后的空格并替换 create table 为 create stable,并添加分号
        CREATE_SQL=$(echo "$CREATE_SQL" | xargs | sed 's/^create table/create stable/' | tr '[:upper:]' '[:lower:]')";"
        # 将创建语句写入输出文件
        echo "$CREATE_SQL" >> $OUTPUT_FILE
    fi
done

# 输出普通表的创建语句
echo "-- 普通表结构" >> $OUTPUT_FILE
for TABLE_NAME in $TABLES; do
    # 跳过空行
    if [[ -n $TABLE_NAME ]]; then
        # 查询表的创建语句
        CREATE_SQL=$(taos -h $TDENGINE_HOST -P $TDENGINE_PORT -u $TDENGINE_USER -p$TDENGINE_PASSWORD -s "USE $DATABASE_NAME; SHOW CREATE TABLE $TABLE_NAME\G;" | grep "Create Table:" | cut -d':' -f2-)
        # 去除前后的空格并添加分号
        CREATE_SQL=$(echo "$CREATE_SQL" | xargs | tr '[:upper:]' '[:lower:]')";"
        # 将创建语句写入输出文件
        echo "$CREATE_SQL" >> $OUTPUT_FILE
    fi
done

echo "表结构已导出到 $OUTPUT_FILE"

将脚本里的tdengine连接信息改成自己的即可输出。表多的话输出会比较慢。

相关文章:

  • Java并发编程(1)
  • 【指针(2)-- 使用指针的技巧】
  • BBR 和 CUBIC 对长肥管道的不同反应
  • 使用请求调用本地部署的stable-diffusion接口
  • 从零开始实现 C++ TinyWebServer 处理请求 HttpRequest类详解
  • 3D引擎:Three.js有什么有什么优缺点?
  • 数据人的进阶之路:四年数仓实践与成长思考
  • Elasticsearch + Docker:实现容器化部署指南
  • SpringBoot3使用CompletableFuture时java.util.ConcurrentModificationException异常解决方案
  • 优先级与环境变量的艺术:驾驭 Linux 系统的核心
  • Vue 入门到实战 五
  • Mac | Excel | 列数改为和行数一样用数字表示
  • MyBatis-Plus(SpringBoot版)学习第一讲:简介入门案例
  • Rocky9.2 编译安装Intel系列无线网卡驱动
  • RK3568 I2C底层驱动详解
  • 查找单入口空闲区域[A卷-hw_od]
  • 博弈论中的均衡精炼:完美贝叶斯均衡、序贯均衡与颤抖手均衡详解
  • 定义时钟约束
  • 游戏引擎学习第176天
  • leetcode699-修剪二叉搜索树
  • 欧盟公布对美关税反制清单,瞄准美国飞机等产品
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 这个五月,有三部纪录电影值得一看
  • 央行:今日起下调再贷款利率0.25个百分点