You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量导入CSV或MySQL备份文件到ClickHouse(无需逐个表操作)

批量导入本地CSV/MySQL备份到ClickHouse的方法

一、批量导入本地CSV文件

如果你的CSV文件名与ClickHouse目标表名一一对应(比如user.csv对应user表),可以通过脚本遍历文件实现批量导入,无需逐个执行命令。

示例Bash脚本

#!/bin/bash
# 假设所有CSV文件都在当前目录,目标数据库为your_database
DB_NAME="your_database"

for csv_file in *.csv; do
    # 从文件名提取表名(去掉.csv后缀)
    table_name="${csv_file%.csv}"
    # 执行导入命令,假设首行是列名,用CSVWithNames格式
    clickhouse-client --query="INSERT INTO $DB_NAME.$table_name FORMAT CSVWithNames" < "$csv_file"
    echo "已完成$table_name表的数据导入"
done

注意事项

  • 确保ClickHouse中已提前创建好对应表的结构(列名、数据类型需与CSV匹配);
  • 如果CSV没有首行列名,将FORMAT CSVWithNames改为FORMAT CSV即可;
  • 大文件可添加--max_insert_block_size参数优化导入性能。

二、批量导入MySQL备份SQL文件

MySQL的备份SQL文件(通常由mysqldump生成)可以通过以下两种方式批量导入:

方法1:借助clickhouse-mysql工具同步

clickhouse-mysql是官方推荐的同步工具,可批量同步MySQL的表结构和数据到ClickHouse:

  1. 安装工具:pip install clickhouse-mysql
  2. 执行批量同步命令:
clickhouse-mysql --src-host=localhost --src-user=root --src-password=your_mysql_pwd \
--dst-host=localhost --dst-user=default --dst-password=your_clickhouse_pwd \
--database=your_mysql_db --tables='*'

该命令会自动同步指定MySQL数据库下的所有表到ClickHouse。

方法2:解析SQL备份文件批量导入

如果是本地的SQL备份文件,可先将其拆分为表结构和数据文件,再批量处理:

  1. 用mysqldump导出时添加--tab=/path/to/export_dir参数,会生成每个表的.sql(结构)和.txt(数据,TSV格式)文件;
  2. 编写脚本遍历.sql文件,转换为ClickHouse兼容的建表语句并执行;
  3. 再用类似CSV批量导入的脚本,将.txt文件导入对应表。

补充:ClickHouse CSV/TSV格式导入说明

ClickHouse原生支持CSV和TSV等文本格式的批量数据加载,核心特性包括:

  • 兼容标准CSV格式,支持自定义分隔符、引号规则和转义字符;
  • 导入时可通过FORMAT CSV(无列名)或FORMAT CSVWithNames(首行为列名)指定格式;
  • 支持通过SET input_format_csv_skip_first_lines = 1跳过首行,或SET input_format_csv_delimiter = ';'自定义分隔符等参数适配不同CSV文件。

内容的提问来源于stack exchange,提问作者Алекс Гусарин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:00:53