#!/bin/sh # ============================================================ # TDengine 初始化执行脚本 # # 由 compose 的 tdengine-init 服务调用,在 tdengine 健康后执行一次。 # 做三件事: # 1. 过滤掉 init.sql 里的注释与空行(taos -f 会逐行执行, # 注释行会被当成不完整 SQL 报错) # 2. 执行建库建表 # 3. 校验超级表确实存在,缺表则以非零码退出(让 compose 暴露失败) # ============================================================ set -eu echo "[tdengine-init] 准备 SQL(过滤注释与空行)" grep -vE '^[[:space:]]*(--|$)' /init/init.sql > /tmp/init.sql echo "[tdengine-init] 待执行语句数:$(wc -l < /tmp/init.sql)" echo "[tdengine-init] 执行建库建表" taos -h tdengine -f /tmp/init.sql echo "[tdengine-init] 校验超级表" missing=0 for pair in "iotlcm_daily:t_sim_card_usage_daily" "iotlcm_monthly:t_sim_card_usage_monthly"; do db=${pair%%:*} stable=${pair##*:} if taos -h tdengine -s "show ${db}.stables;" 2>/dev/null | grep -q "$stable"; then echo " OK ${db}.${stable}" else echo " MISS ${db}.${stable}" missing=1 fi done if [ "$missing" -ne 0 ]; then echo "[tdengine-init] 失败:超级表缺失,请检查 taos 输出" exit 1 fi echo "[tdengine-init] 完成"