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

ClickHouse迁移Starrocks脚本工具

使用方法:执行sh process_inspect_event_dist.sh

#!/bin/bash# 表名 分区字段 分区
sh export.sh m_event "toYYYYMM(operation_time)" 202509# 表名 分区 表内字段
sh import.sh m_event 202509 batch_id,business_type,tenant_id,create_time 

先导出ClickHouse数据至CSV文件:

#!/bin/bash# 定义表名数组
tables=("$1")
partition="$2"
dt=$3# 定义IP地址数组
ips=("198.0.0.1""198.0.0.2"
)# 清理csv文件
rm -rf /data1/export/out* if [ "$1" = "" ]; thenecho "错误: table name变量未设置"exit 1
fiif [ "$2" = "" ]; thenecho "错误: partition变量未设置"exit 1
fiif [ "$dt" = "" ]; thenecho "错误: dt变量未设置"exit 1
fiecho "Export for dt $dt:"# 循环遍历每张表
for table in "${tables[@]}"; doecho "Processing table: $table"# 循环遍历每个IP地址for i in "${!ips[@]}"; doip=${ips[$i]}echo "Executing query on IP: $ip"# 构建输出文件名output_file="out-${table}-$dt-$((i+1)).csv"# 执行ClickHouse查询并将结果保存到CSV文件clickhouse-client -h "$ip" -u admin --password 123456 -m --query "SELECT * FROM test.$table WHERE $2 = '$3'  ;" > "$output_file"# 检查命令是否成功if [ $? -eq 0 ]; thenecho "Query executed successfully. Output saved to $output_file"elseecho "Failed to execute query on IP: $ip"fidoneecho "Finished processing table: $table"echo "----------------------------------------"
doneecho "All queries have been executed."

然后导入StarRocks中:

#!/bin/bash# StarRocks Stream Load配置
USER="root"
PASSWORD="123456"
HOST="192.168.0.3"
PORT="8030"
DATABASE="test"
TABLE="$1"dt=$2# 列定义
COLUMNS="$3"# 文件列表(按数字顺序排序)
FILES=(
"out-$1-$dt-1.csv"
)# 创建日志目录
LOG_DIR="/data1/export"if [ "$1" = "" ]; thenecho "错误: table name变量未设置"exit 1
fiif [ "$dt" = "" ]; thenecho "错误: dt变量未设置"exit 1
fiif [ "$3" = "" ]; thenecho "错误: columns变量未设置"exit 1
fi# 遍历所有文件并执行Stream Load
for FILE in "${FILES[@]}"; do# 检查文件是否存在if [ ! -f "$FILE" ]; thenecho "文件 $FILE 不存在,跳过..."continuefi# 生成唯一label(带时间戳)TIMESTAMP=$(date +%Y%m%d%H%M%S)LABEL="load_${FILE%.*}_$TIMESTAMP"# 输出当前处理信息echo "正在处理文件: $FILE (Label: $LABEL)"echo "文件大小: $(du -h "$FILE" | cut -f1)"# 执行Stream LoadSTART_TIME=$(date +%s)curl --location-trusted -u "$USER:$PASSWORD" \-H "label:$LABEL" \-H "column_separator:	" \-H "columns:$COLUMNS" \-T "$FILE" -XPUT \"http://$HOST:$PORT/api/$DATABASE/$TABLE/_stream_load" > "$LOG_DIR/${LABEL}.log" 2>&1# 检查curl命令执行结果CURL_EXIT_CODE=$?END_TIME=$(date +%s)DURATION=$((END_TIME - START_TIME))if [ $CURL_EXIT_CODE -eq 0 ]; then# 解析响应日志检查是否成功if grep -q '"Status": "Success"' "$LOG_DIR/${LABEL}.log"; thenecho "成功导入 $FILE (耗时: ${DURATION}秒)"# 可选:导入成功后移动或删除文件# mv "$FILE" "processed/$FILE"elseecho "导入 $FILE 失败,请查看日志: $LOG_DIR/${LABEL}.log"fielseecho "执行curl命令失败 (退出码: $CURL_EXIT_CODE),文件: $FILE"fi# 避免短时间内发送过多请求(根据需要调整)sleep 2
doneecho "所有文件处理完成。日志保存在 $LOG_DIR 目录中。"

http://www.dtcms.com/a/520189.html

相关文章:

  • LeeCode 74. 搜索二维矩阵
  • 网站建设报价单wordpress type参数
  • 长沙网站建设与维护樟木头镇仿做网站
  • Pandas DataFrame:深入理解数据分析的利器
  • Python嵌入(绿色免安装)版:解决安装第三方包后仍无法使用问题
  • 鸿蒙:将Resource类型的image转成 image.PixelMap 类型
  • 如何创建自己的网站平台网站项目建设措施
  • 网站论坛制作滕州手机网站建设案例
  • CANoe学习(一)软件安装和基本使用
  • transform和LLM回顾一下知识点(复习笔记(专业:AI))
  • 怎样创建网站或网页ui设计师怎么做自己的网站
  • Java的抽象类实践-模板设计模式
  • 手记鲁班猫树莓派部署python服务
  • 国企员工学PMP完全是多此一举,听劝好吧
  • 【数论】欧拉函数
  • 【工具】Docker 的基础使用
  • 网站流量与广告费编辑wordpress文章页
  • java基础:String字符串的用法详解
  • 唐河网站制作品牌推广文案
  • VSCode/PyCharm解决“无法加载文件 ***\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本”
  • 做设计的需要网站下载素材吗wordpress菜单添加图标
  • HTML游戏开发:使用视频作为特效自动播放的方法
  • 单芯片USB拓展坞+百兆网卡+读卡器+100W快充芯片CH336F
  • 考研数学——一元函数微分学篇
  • MATLAB基于改进灰色聚类的装备技术风险评估方法
  • 最佳经验网站wordpress大学百度云
  • AI服务器工作之显卡测试
  • C++仿mudo库高并发服务器项目:Socket模块
  • 找人帮忙做网站吉林市百姓网免费发布信息网
  • HTTP与HTTPS协议区别及应用场景