加载 JSON
在这一部分,我们假设 JSON 数据采用 NDJSON(换行符分隔的 JSON)格式,在 ClickHouse 中称为 JSONEachRow
。由于其简洁性和高效的空间利用,这是加载 JSON 的首选格式,但其他格式亦支持 输入和输出。
考虑以下 JSON 示例,代表来自 Python PyPI 数据集 的一行数据:
为了将此 JSON 对象加载到 ClickHouse 中,必须定义一个表模式。下面显示了一个简单的模式,其中 JSON 键映射到列名:
排序键
我们通过 ORDER BY
子句在这里选择了一个排序键。有关排序键的更多详细信息以及如何选择它们,请参见 这里。
ClickHouse 可以以多种格式加载 JSON 数据,根据扩展名及内容自动推断类型。我们可以使用 S3 函数 读取上述表的 JSON 文件:
注意,我们不需要指定文件格式。相反,我们使用通配符模式读取存储桶中的所有 *.json.gz
文件。ClickHouse 自动从文件扩展名和内容推断格式为 JSONEachRow
(ndjson)。如果 ClickHouse 无法检测到格式,可以通过参数函数手动指定格式。
压缩文件
上述文件也进行了压缩。ClickHouse 会自动检测并处理此情况。
要加载这些文件中的行,我们可以使用 INSERT INTO SELECT
:
行也可以使用 FORMAT
子句 在线加载,例如:
这些示例假设使用 JSONEachRow 格式。其他常见的 JSON 格式也受到支持,加载这些格式的示例可以在 这里 找到。
上述提供了一个非常简单的 JSON 数据加载示例。对于更复杂的 JSON,包括嵌套结构,请参见指南 设计 JSON 模式。