clickhouse-client INSERT CSV/TSV时跳过错误行

clickhouse-client INSERT CSV/TSV时跳过错误行

在使用clickhouse-client向ck中导入csv文件时,当csv中有个别行数据格式错误时,整个文件就插入失败了,经常会导致丢数据。

经过一番搜索,发现ck提供了两个参数可以跳过错误行,其他的行正常入库,可以满足要求。

参数说明

input_format_allow_errors_num

设置从文本格式(CSV、TSV等)读取时可接受的最大错误数。

默认值为0。

如果在读取行时发生错误,但错误数仍然小于input_format_allow_errors_num时,则ck将忽略该行并转到下一行。

input_format_allow_errors_ratio

设置从文本格式(CSV、TSV等)读取时允许的最大错误百分比。错误百分比设置为介于0和1之间的浮点数。

默认值为0。

如果在读取行时发生错误,但错误比率小于input_format_allow_errors_ratio,则ck将忽略该行并转到下一行。

两个参数可以单独设置,当超过阈值时才抛出错误。

也可以同时设置,当两个阈值都超过时,再抛出错误。

参数设置方式

在配置文件中设置

在配置文件中添加以下行即可,是作用于整个ck的,不建议这么配置。

xml 复制代码
<input_format_allow_errors_num>10000</input_format_allow_errors_num>
<input_format_allow_errors_ratio>0.1</input_format_allow_errors_ratio>

在插入数据的时候配置

在插入时指定如下配置,配置是针对本次插入的,建议使用这种配置。

cmd 复制代码
--input_format_allow_errors_num=1 
--input_format_allow_errors_ratio=0.1

使用案例

指定允许错误条数为10000,错误比率为0.1

cmd 复制代码
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 
相关推荐
AI你一生一世2 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影2 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯3 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
vibecode5 小时前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
迪康Defender6 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
沫璃染墨7 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
海的透彻7 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat7 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习8 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one8 小时前
算法--构造
java·数据结构·算法