• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • 随笔>
  • 正文
  • shell分批导入数据到clickhouse

    2024年04月06日 1.1 k 阅读 0 评论 1493 字

    脚本

    #!/bin/bash
    
    # 定义ClickHouse连接参数
    CLICKHOUSE_HOST="127.0.0.1"
    CLICKHOUSE_PORT="9000"
    CLICKHOUSE_DATABASE="xxx"
    CLICKHOUSE_USER=""
    CLICKHOUSE_PASSWORD=""
    
    # 定义每个批次的大小(可根据需要调整)
    BATCH_SIZE=100000
    
    # 定义SQL文件路径
    SQL_FILE="/root/sql/sql.sql"
    
    # 计算SQL文件的总行数
    TOTAL_LINES=$(wc -l < "$SQL_FILE")
    echo "Total lines in SQL file: $TOTAL_LINES"
    
    # 计算需要执行的批次数量
    TOTAL_BATCHES=$((TOTAL_LINES / BATCH_SIZE + 1))
    echo "Total batches to execute: $TOTAL_BATCHES"
    
    # 循环执行每个批次的导入
    for i in $(seq 0 $((TOTAL_BATCHES - 1))); do
        # 计算当前批次的起始行号和结束行号
        START_LINE=$((i * BATCH_SIZE + 1))
        END_LINE=$(((i + 1) * BATCH_SIZE))
        if [ "$END_LINE" -gt "$TOTAL_LINES" ]; then
            END_LINE=$TOTAL_LINES
        fi
    
        # 提取当前批次的SQL语句并保存到临时文件中
        awk "NR >= $START_LINE && NR <= $END_LINE" "$SQL_FILE" > batch_${i}.sql
    
        # 导入当前批次的数据到ClickHouse
        echo "Importing batch $i (lines $START_LINE to $END_LINE)..."
        #cat batch_${i}.sql | clickhouse-client -h "$CLICKHOUSE_HOST" --port "$CLICKHOUSE_PORT"
        clickhouse-client -h "$CLICKHOUSE_HOST" --port "$CLICKHOUSE_PORT" --query="INSERT INTO xx.xx FORMAT MySQLDump" < batch_${i}.sql
      
    
        # 检查上一步操作是否成功
        if [ $? -eq 0 ]; then
            echo "Batch $i import completed successfully."
        else
            echo "Error: Batch $i import failed."
            exit 1
        fi
    
        # 删除临时文件
        rm -f batch_${i}.sql
    done
    
    echo "Import completed!"
    

    这样,clickhouse-client 将执行SQL文件中指定的数据库和表上的操作。

    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.017 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。