导出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连接信息改成自己的即可输出。表多的话输出会比较慢。