ClickHouse导入CSV文件跳过错误【译文】

原文

翻译有误请指正~

ClickHouse是来自“战斗民族”的高性能分析性数据库,圈内人戏称为“喀秋莎数据库”。

背景

  • 有人导入700G的CSV文件,结果因为一些行异常,导入失败,报错:
1
2
3
Code: 27. DB::Exception: Cannot parse input: expected ,
before: an,,113.143.235.107,,,
https://ads.diamonds/c/3b4336c6-db9a-11e5-bea8-021988c520a1?cid=%COOKIEID&campaignid=%HASH_CODE&pubid=%ADD_CODE&subid=%PLACEMENT,2017-09-0: (at row 865704)
  • 很明显是因为一些特殊字段导致的(译者注)

  • 于是在Google Groups里提问是否有跳过错误的参数。

回复

  • 在俄文的官方文档里,有记录
  • 在英文的文档里,没有这个参数的描述(译者注,的确,这点吐槽一下)
  • 相关源码:
1
2
3
4
5
6
7
/** Maximum amount of errors while reading text formats (like CSV, TSV). \
* In case of error, if both values are non-zero, \
* and at least absolute or relative amount of errors is lower than corresponding value, \
* will skip until next line and continue. \
*/ \
M(SettingUInt64, input_format_allow_errors_num, 0) \
M(SettingFloat, input_format_allow_errors_ratio, 0)

使用方式

  • 修改config.xml
1
<input_format_allow_errors_num>100</input_format_allow_errors_num>

译者注

先吐槽

  • 这么重要的参数,在英文官方文档里,居然没有

  • 之后又Google发现了其他的用法:

1
2
3
clickhouse-client --input_format_allow_errors_num=1 \
--input_format_allow_errors_ratio=0.1 \
--query="INSERT INTO test.formats_test FORMAT TSV"

热评文章