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

加载 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 模式