Skip to main content
Edit this page

Object Data Type (非推奨)

この機能は本番環境で利用可能な状態ではなく、現在非推奨です。 JSON ドキュメントを扱う必要がある場合は、このガイドを参照してください。JSON オブジェクトをサポートする新しい実装が進行中であり、こちらで追跡できます。


JavaScript Object Notation (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

Orderedな MergeTree ファミリのテーブルを作成するためには、ソートキーをそのカラムに抽出する必要があります。例えば、圧縮された JSON 形式の HTTP アクセスログファイルを挿入するには:

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]}}}

関連コンテンツ