| 入力 | 出力 | エイリアス |
|---|---|---|
| ✔ | ✔ |
説明
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
フォーマット設定
| 設定 | 説明 | デフォルト | 注記 |
|---|---|---|---|
input_format_import_nested_json | ネストされたJSONデータをネストされたテーブルにマッピングします (JSONEachRowフォーマットで機能します) 。 | false | |
input_format_json_read_bools_as_numbers | JSON入力フォーマットで、Bool値を数値として解析できるようにします。 | true | |
input_format_json_read_bools_as_strings | JSON入力フォーマットで、bool値を文字列として解析できるようにします。 | true | |
input_format_json_read_numbers_as_strings | JSON入力フォーマットで、数値を文字列として解析できるようにします。 | true | |
input_format_json_read_arrays_as_strings | JSON入力フォーマットで、JSON配列を文字列として解析できるようにします。 | true | |
input_format_json_read_objects_as_strings | JSON入力フォーマットで、JSONオブジェクトを文字列として解析できるようにします。 | true | |
input_format_json_named_tuples_as_objects | 名前付きタプルのカラムを JSON オブジェクトとして解析します。 | true | |
input_format_json_try_infer_numbers_from_strings | スキーマ推論時に、文字列フィールドから数値を推論します。 | false | |
input_format_json_try_infer_named_tuples_from_objects | スキーマ推論時に、JSON オブジェクトから名前付きタプルを推論します。 | true | |
input_format_json_infer_incomplete_types_as_strings | JSON input formats でのスキーマ推論時に、Null または空のオブジェクト/配列のみを含むキーには String 型を使用します。 | true | |
input_format_json_defaults_for_missing_elements_in_named_tuple | named tuple のパース時に、JSON object で欠落している要素にデフォルト値を挿入します。 | true | |
input_format_json_ignore_unknown_keys_in_named_tuple | named tuple について、JSON object 内の不明なキーを無視します。 | false | |
input_format_json_compact_allow_variable_number_of_columns | JSONCompact/JSONCompactEachRow フォーマットで可変数のカラムを許可し、余分なカラムは無視して、不足しているカラムにはデフォルト値を使用します。 | false | |
input_format_json_throw_on_bad_escape_sequence | JSON 文字列に不正なエスケープシーケンスが含まれている場合は例外を発生させます。無効にすると、不正なエスケープシーケンスはデータ内にそのまま残ります。 | true | |
input_format_json_empty_as_default | JSON 入力内の空のフィールドをデフォルト値として扱います。 | false. | 複雑なデフォルト式の場合は、input_format_defaults_for_omitted_fields も有効にする必要があります。 |
output_format_json_quote_64bit_integers | JSON出力フォーマットで64ビット整数を引用符で囲んで出力するかどうかを制御します。 | true | |
output_format_json_quote_64bit_floats | JSON出力フォーマットで64ビット浮動小数点数を引用符で囲んで出力するかどうかを制御します。 | false | |
output_format_json_quote_denormals | JSON出力フォーマットで’+nan’、‘-nan’、‘+inf’、‘-inf’を出力できるようにします。 | false | |
output_format_json_quote_decimals | JSON 出力フォーマットで小数を引用符で囲むかどうかを制御します。 | false | |
output_format_json_escape_forward_slashes | JSON 出力フォーマットで文字列出力のスラッシュをエスケープするかどうかを制御します。 | true | |
output_format_json_named_tuples_as_objects | named tuple のカラムを JSON object としてシリアライズします。 | true | |
output_format_json_array_of_rows | JSONEachRow(Compact) フォーマットで、すべての行を JSON array として出力します。 | false | |
output_format_json_validate_utf8 | JSON 出力フォーマットにおける UTF-8 シーケンスの検証を有効にします (JSON/JSONCompact/JSONColumnsWithMetadata フォーマットには影響しない点に注意してください。これらは常に UTF-8 を検証します) 。 | false |