对象数据类型 (已弃用)
此功能尚未投入生产,现已弃用。如果您需要处理 JSON 文档,请考虑使用本指南。一个新的实现来支持 JSON 对象正在进行中,可以追踪这里。
在单个列中存储 JavaScript 对象表示法 (JSON) 文档。
JSON
可以在设置use_json_alias_for_old_object_type 时用作 Object('json')
的别名。
示例
示例 1
创建一个带有 JSON
列的表并将数据插入其中
CREATE TABLE json
(
o JSON
)
ENGINE = Memory
INSERT INTO json VALUES ('{"a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')
SELECT o.a, o.b.c, o.b.d[3] FROM json
┌─o.a─┬─o.b.c─┬─arrayElement(o.b.d, 3)─┐
│ 1 │ 2 │ 3 │
└─────┴───────┴────────────────────────┘
示例 2
为了能够创建有序的 MergeTree
系列表,排序键必须提取到其列中。例如,要插入压缩的 HTTP 访问日志的 JSON 格式文件
CREATE TABLE logs
(
timestamp DateTime,
message JSON
)
ENGINE = MergeTree
ORDER BY timestamp
INSERT INTO logs
SELECT parseDateTimeBestEffort(JSONExtractString(json, 'timestamp')), json
FROM file('access.json.gz', JSONAsString)
显示 JSON 列
在显示 JSON
列时,ClickHouse 默认只显示字段值(因为在内部,它表示为元组)。您还可以通过设置 output_format_json_named_tuples_as_objects = 1
来显示字段名称
SET output_format_json_named_tuples_as_objects = 1
SELECT * FROM json FORMAT JSONEachRow
{"o":{"a":1,"b":{"c":2,"d":[1,2,3]}}}