CSV数据导入到ClickHouse数据库

问题描述:手头上有一个数据量较大的CSV文件,希望导入到指定的ClickHouse数据中,ClickHouse部署在服务器中。

解决方案:通常来说,数据量较少的CSV文件可以直接通过DBeaver软件的可视化界面导入数据。

若数据量较大,则建议将CSV文件传输到clickhouse所在服务器上,使用命令将数据导入到数据库中指定的表中。(提前在数据库中根据字段建立表结构)

step1:在数据库中建立对应的表

方法一:可以借助DBeaver的可视化界面,在里面编写SQL建表语句

方法二:在服务器中,进入clickhouse交互式界面。在交互式界面编写SQL语句建表。
clickhouse-client --host=127.0.0.1 --port 9000 --user default

step2:导入CSV数据

在服务器的命令行界面,执行如下语句:

  • 导入的CSV文件没有字段名称时:
    cat csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSV"

  • 导入的CSV文件有字段名称时
    cat csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSVWithNames"

  • 如果想要跳过首行,或者特定行,则可以使用如下命令:(1d表示跳过第一行)
    sed '1d' csv文件路径 | clickhouse-client --query="INSERT INTO 数据库.表名 FORMAT CSV"

  • (重要)clickhouse-client INSERT CSV/TSV时跳过错误行

    在使用clickhouse-client向ck中导入csv文件时,当csv中有个别行数据格式错误时,整个文件就插入失败了,经常会导致丢数据。
    案例 :指定允许错误条数为10000,错误比率为0.1
    cat a.csv | clickhouse-client --host 127.0.0.1 --port 9000 --database default \ --user default --query="INSERT INTO tb_a FORMAT CSVWithNames " \ --format_csv_delimiter="|" --input_format_allow_errors_num=10000 \ --input_format_allow_errors_ratio=0.1

  • clickhouse官方推荐语句:在clickhouse-client客户端的安装目录下执行如下命令。
    cat <本地文件名> | ./clickhouse-client --host=<数据库连接地址> --port=<TCP端口号> --user=<数据库账号> --password=<数据库账号的密码> --query="INSERT INTO <ClickHouse表名> FORMAT <本地文件格式>";

相关推荐
嘘神秘用5 小时前
布:AI 驱动的 Redis 客户端,更快、更直观
数据库·人工智能·redis
东北小狐狸-Hellxz7 小时前
Redis 哨兵搭建+ACL权限控制
数据库·redis
研究员子楚8 小时前
GEO行业发展标准体系白皮书V2.0-第09卷 · 适配篇:硅基主权伦理宪章与行业适配宣言
数据库·人工智能·geo
l134062082359 小时前
鸿蒙实战:RDB 数据库设计与 DatabaseService
数据库·华为·harmonyos·鸿蒙系统
山峰哥9 小时前
数据库工程与索引策略实战指南‌
服务器·数据库·sql·oracle·深度优先
谙忆9 小时前
图片版权保护工程实战:明水印、盲水印(DCT隐写)、Referer防盗链与签名URL怎么落地
数据库
KaMeidebaby10 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
xfhuangfu10 小时前
19c CDB架构下的数据库启动和停止
数据库·架构
神道君天下10 小时前
填充与积累:积分与面积的可视化
数据库·oracle
爱折腾的小黑牛10 小时前
小程序云开发数据模型设计:礼账系统的三表结构
数据库·架构