influx query ‘from(bucket: “byt-grid-data”)
|> range(start: 2025-04-01T00:00:00Z, stop: 2025-04-02T23:59:59Z)
|> filter(fn: ® => r[“_measurement”] == “byt-gzsn-hsxn-sc-dcs”)
|> filter(fn: ® => r[“_field”] == “F_ACT_FZZ02_FB_O”)
|> filter(fn: ® => r[“host”] == “host1”)
|> toFile(file: “/tmp/restored_data.csv”)’
influx query ‘from(bucket: “byt-grid-data”)
|> range(start: 2025-04-01T00:00:00Z, stop: 2025-04-01T00:59:59Z)
|> filter(fn: ® => r[“_measurement”] == “byt-gzsn-hsxn-sc-dcs”)
|> filter(fn: ® => r[“_field”] == “F_ACT_FZZ02_FB_O”)
|> filter(fn: ® => r[“host”] == “host1”)’ > /tmp/t001.csv
查询InfluxDB并返回带注释的CSV
influx query ‘from(bucket: “byt-grid-data”)
|> range(start: 2025-04-10T00:00:00Z, stop: 2025-04-11T01:00:00Z)
|> filter(fn: ® => r[“_measurement”] == “byt-gzsn-hsxn-sc-dcs”)
|> filter(fn: ® => r[“_field”] == “F_ACT_FZZ02_FB_O”)
|> filter(fn: ® => r[“host”] == “host1”)
|> timeShift(duration: 8h)’ --raw > /tmp/t002.csv
influx query ‘from(bucket: “byt-grid-data”)
|> range(start: 2025-04-10T00:00:00+08:00, stop: 2025-04-11T00:00:00+08:00)
|> filter(fn: ® => r[“_measurement”] == “byt-gzsn-hsxn-sc-dcs”)
|> filter(fn: ® => r[“_field”] == “F_ACT_FZZ02_FB_O”)
|> filter(fn: ® => r[“host”] == “host1”)
|> timeShift(duration: 8h)’ --raw > /tmp/t002.csv
登陆ftp
lftp -u hl,Admin@123 -p 63036 122.224.62.130
惠水西南边缘端
核心脚本
/root/bin/export_influx.sh
#!/bin/bash# 使用方法: ./export_influx.sh <标签名称> <开始日期> <结束日期> <输出目录>
# 示例: ./export_influx.sh F_ACT_FZZ02_FB_O 2025-04-01 2025-04-03 ./outputif [ $# -ne 4 ]; thenecho "错误:参数数量不正确!"echo "用法: $0 <标签名称> <开始日期> <结束日期> <输出目录>"exit 1
fiTAG="$1"
START_DATE="$2"
END_DATE="$3"
OUTPUT_DIR="$4"# 创建输出目录
OUTPUT_DIR="$OUTPUT_DIR"/"$TAG"
mkdir -p "$OUTPUT_DIR"# 日期格式校验
date -d "$START_DATE" +%Y-%m-%d >/dev/null 2>&1 || { echo "无效的开始日期格式"; exit 1; }
date -d "$END_DATE" +%Y-%m-%d >/dev/null 2>&1 || { echo "无效的结束日期格式"; exit 1; }# 将日期转换为秒数(用于循环)
START_SEC=$(date -d "$START_DATE" +%s)
END_SEC=$(date -d "$END_DATE" +%s)if [ $START_SEC -gt $END_SEC ]; thenecho "错误:开始日期不能晚于结束日期!"exit 1
fi# 记录开始时间
start_time_p=$(date +%s)
echo "开始时间: $(date -d @"$start_time_p" '+%Y-%m-%d %H:%M:%S')"# 按天循环处理
current_sec=$START_SEC
while [ $current_sec -lt $END_SEC ]; do# 获取当前循环日期CURRENT_DATE=$(date -d @$current_sec +%Y-%m-%d)# 增加一天current_sec=$((current_sec + 86400))STOP_DATE=$(date -d @$current_sec +%Y-%m-%d)# 生成时间范围(当日00:00:00到次日00:00:00)START_TIME="${CURRENT_DATE}T00:00:00+08:00"STOP_TIME="${STOP_DATE}T00:00:00+08:00"# 生成输出文件名OUTPUT_FILE="${OUTPUT_DIR}/${CURRENT_DATE}.csv"echo "正在导出 ${CURRENT_DATE} 的数据到 ${OUTPUT_FILE}..."# 执行查询命令influx query "from(bucket: \"byt-grid-data\")|> range(start: $START_TIME, stop: $STOP_TIME)|> filter(fn: (r) => r[\"_measurement\"] == \"byt-gzsn-hsxn-sc-dcs\")|> filter(fn: (r) => r[\"_field\"] == \"$TAG\")|> filter(fn: (r) => r[\"host\"] == \"host1\")|> timeShift(duration: 8h)" --raw > "$OUTPUT_FILE"# 检查文件是否为空if [ ! -s "$OUTPUT_FILE" ]; thenecho "警告:${CURRENT_DATE} 无数据,删除空文件"rm -f "$OUTPUT_FILE"fidoneecho "导出完成!"# 记录结束时间
end_time_p=$(date +%s)# 计算耗时
elapsed_time=$((end_time_p - start_time_p))# 格式化耗时
days=$((elapsed_time / 60 / 60 / 24))
hours=$((elapsed_time / 60 / 60 % 24))
minutes=$((elapsed_time / 60 % 60))
seconds=$((elapsed_time % 60))# 打印耗时
echo "开始时间: $(date -d @"$start_time_p" '+%Y-%m-%d %H:%M:%S')"
echo "结束时间: $(date -d @"$end_time_p" '+%Y-%m-%d %H:%M:%S')"
printf "耗时: %02dd%02dh%02dm%02ds\n" $days $hours $minutes $seconds