适配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_FILEfi
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_FILEfi
doneecho "表结构已导出到 $OUTPUT_FILE"
将脚本里的tdengine连接信息改成自己的即可输出。表多的话输出会比较慢。