更新时间:2024-11-29 GMT+08:00

ClickHouse数据批量导入

操作场景

当同时存在较多待导入的数据文件,用户可以使用多线程导入工具批量导入ClickHouse。

前提条件

  • 已安装ClickHouse客户端,例如客户端安装目录为“/opt/client”。
  • 若集群为安全模式需要创建一个具有ClickHouse相关权限的用户,例如创建用户“clickhouseuser”,具体请参考ClickHouse用户及权限管理
  • 准备待导入的数据文件,并将数据文件上传到客户端节点目录,例如上传到目录“/opt/data”。ClickHouse支持的所有数据类型请参考:https://clickhouse.com/docs/en/interfaces/formats

操作步骤

  1. 以客户端安装用户,登录客户端所在节点。
  2. 进入多线程写入工具“clickhouse_insert_tool”所在目录:

    cd /opt/client/ClickHouse/clickhouse_insert_tool

  3. 使用文本编辑器打开clickhouse_insert_tool.sh,按照注释填写所需信息:

    参数

    参数描述

    示例

    datapath

    待导入数据所在目录。

    /opt/data

    balancer_ip_list

    ClickHouse服务Balancer实例IP地址列表,整体使用括号括起,单个IP使用双引号引起,IP之间使用空格分隔。

    ("192.168.1.1" "192.168.1.2")

    balancer_tcp_port

    ClickHouse服务Balancer实例TCP端口。

    21428

    local_table_name

    待导入的本地库名.本地表名。

    testdb1.testtb1

    thread_num

    并发导入线程数。

    10

    data_format

    待导入数据的格式。

    CSV

    is_security_cluster

    是否为安全模式集群。

    • true:表示安全模式
    • false:表示普通模式

    true

  4. 保存修改后的 “clickhouse_insert_tool.sh”,并执行如下命:

    cd /opt/client

    source bigdata_env

    安全模式(开启Kerberos认证)执行kinit命令,普通模式(关闭Kerberos认证)无需执行:

    kinit clickhouseuser

  5. 运行脚本,导入数据。

    ./ClickHouse/clickhouse_insert_tool/clickhouse_insert_tool.sh

  6. 登录ClickHouse客户端节点,链接服务端,具体请参考从零开始使用ClickHouse
  7. 执行如下命令,查询插入数据的本地表对应的分布式表,查看结果是否符合预期:

    select count(1) from testdb1.testtb1_all;