メインコンテンツへスキップ

説明

このフォーマットでは、すべてのデータが1つのJSONオブジェクトとして表現され、各行は JSONEachRow フォーマットと同様に、そのオブジェクト内の個別のフィールドとして表されます。

使用例

基本例

次の JSON があるとします。
オブジェクト名をカラムの値として使用するには、特別な設定 format_json_object_each_row_column_for_object_name を使用できます。 この設定の値にはカラム名を指定します。指定したカラム名は、生成されるオブジェクト内で各行の JSON キーとして使用されます。

出力

test というテーブルに 2 つのカラムがあるとしましょう。
JSONObjectEachRow フォーマットで出力し、format_json_object_each_row_column_for_object_name 設定を使用します。
Query
Response

入力

前の例の出力を data.json という名前のファイルに保存したとします:
Query
Response
スキーマ推論にも利用できます:
Query
Response

データの挿入

Query
ClickHouse では次のことが可能です。
  • オブジェクト内のキー・バリューのペアは、どのような順序でも指定できます。
  • 一部の値は省略できます。
ClickHouse は、要素間の空白やオブジェクトの後のカンマを無視します。すべてのオブジェクトを1行で渡すこともできます。改行で区切る必要はありません。

省略された値の処理

ClickHouse は、省略された値を対応するdata typesのデフォルト値に置き換えます。 DEFAULT expr が指定されている場合、ClickHouse は input_format_defaults_for_omitted_fields 設定に応じて、異なる置き換えルールを使用します。 次のテーブルを考えます。
Query
  • input_format_defaults_for_omitted_fields = 0 の場合、xa のデフォルト値はいずれも 0 です (UInt32 データ型のデフォルト値) 。
  • input_format_defaults_for_omitted_fields = 1 の場合、x のデフォルト値は 0 ですが、a のデフォルト値は x * 2 になります。
input_format_defaults_for_omitted_fields = 1 でデータを挿入する場合、input_format_defaults_for_omitted_fields = 0 の場合に比べて、ClickHouse はより多くの計算リソースを消費します。

データの取得

例として、UserActivityテーブルを見てみましょう。
クエリ SELECT * FROM UserActivity FORMAT JSONEachRow は次の結果を返します。
JSON フォーマットとは異なり、無効な UTF-8 シーケンスは置換されません。値は JSON と同じ方法でエスケープされます。
文字列には任意のバイト列を出力できます。テーブル内のデータを情報を失うことなく JSON としてフォーマットできることが確実な場合は、JSONEachRow フォーマットを使用してください。

Nested 構造の使用

Nested データ型のカラムを持つテーブルがある場合、同じ構造の JSON データを挿入できます。この機能は、input_format_import_nested_json 設定を有効にすることで使用できます。 たとえば、次のテーブルを考えてみましょう。
Query
Nested データ型の説明にあるとおり、ClickHouse ではネスト構造の各要素を個別のカラム (このテーブルでは n.sn.i) として扱います。データは次のように挿入できます。
Query
階層的なJSONオブジェクトとしてデータを挿入するには、input_format_import_nested_json=1を設定します。
この設定がない場合、ClickHouse は例外をスローします。
Query
Response
Query
Response
Query
Response

フォーマット設定

最終更新日 2026年6月19日