説明
JSONEachRow フォーマットと同様に、そのオブジェクト内の個別のフィールドとして表されます。
使用例
基本例
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
- オブジェクト内のキー・バリューのペアは、どのような順序でも指定できます。
- 一部の値は省略できます。
省略された値の処理
DEFAULT expr が指定されている場合、ClickHouse は input_format_defaults_for_omitted_fields 設定に応じて、異なる置き換えルールを使用します。
次のテーブルを考えます。
Query
input_format_defaults_for_omitted_fields = 0の場合、xとaのデフォルト値はいずれも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 と同じ方法でエスケープされます。
文字列には任意のバイト列を出力できます。テーブル内のデータを情報を失うことなく JSON としてフォーマットできることが確実な場合は、
JSONEachRow フォーマットを使用してください。Nested 構造の使用
Nested データ型のカラムを持つテーブルがある場合、同じ構造の JSON データを挿入できます。この機能は、input_format_import_nested_json 設定を有効にすることで使用できます。
たとえば、次のテーブルを考えてみましょう。
Query
Nested データ型の説明にあるとおり、ClickHouse ではネスト構造の各要素を個別のカラム (このテーブルでは n.s と n.i) として扱います。データは次のように挿入できます。
Query
input_format_import_nested_json=1を設定します。
Query
Response
Query
Response
Query
Response