跳到主要内容
跳到主要内容

如何将 JSON 导入 ClickHouse?

ClickHouse 支持多种输入和输出数据格式。其中包含多种 JSON 变体,但在数据摄取场景中最常用的是 JSONEachRow。它要求每行一个 JSON 对象,各对象之间以换行符分隔。

示例

使用 HTTP 接口

$ echo '{"foo":"bar"}' | curl 'http://localhost:8123/?query=INSERT%20INTO%20test%20FORMAT%20JSONEachRow' --data-binary @-

使用CLI 界面

$ echo '{"foo":"bar"}'  | clickhouse-client --query="INSERT INTO test FORMAT JSONEachRow"

与其手动插入数据,你可以考虑改用集成工具

实用设置

  • input_format_skip_unknown_fields 允许即使 JSON 中包含表结构中不存在的额外字段也能插入数据(通过丢弃这些字段)。
  • input_format_import_nested_json 允许将嵌套的 JSON 对象插入到 Nested 类型的列中。
注意

设置可以作为 HTTP 接口的 GET 参数,或作为带有 -- 前缀的额外命令行参数提供给 CLI 接口。