Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

insert_* セッション設定

これらの設定は system.settings で利用でき、ソースコード から自動生成されています。

insert_allow_materialized_columns

Bool
デフォルト値
0

この設定を有効にすると、INSERT でマテリアライズドカラムを使用できます。

insert_deduplicate

Bool
デフォルト値
1

INSERT の block の重複排除 (Replicated* テーブル向け) を有効または無効にします。

この設定は、deduplicate_insertbackward_compatible_choice に設定されている場合にのみ有効です。

設定可能な値:

  • 0 — 無効。
  • 1 — 有効。

デフォルトでは、INSERT ステートメントによってレプリケートテーブルに挿入された block は重複排除されます (Data Replication を参照) 。 レプリケートテーブルでは、デフォルトで各パーティションにつき直近 100 個の block のみが重複排除されます (replicated_deduplication_windowreplicated_deduplication_window_seconds を参照) 。 非レプリケートテーブルについては、non_replicated_deduplication_window を参照してください。

insert_deduplication_token

この設定を使用すると、MergeTree/ReplicatedMergeTree で独自の重複排除セマンティクスを指定できます。 たとえば、各 INSERT ステートメントでこの設定に一意の値を指定することで、 同じ挿入データが重複排除されるのを防げます。

設定可能な値:

  • 任意の文字列

insert_deduplication_token は、空でない場合にのみ重複排除に使用されます。

レプリケートテーブルでは、デフォルトで各パーティションごとに直近 100 件の insert のみが重複排除されます (replicated_deduplication_windowreplicated_deduplication_window_seconds を参照) 。 非レプリケートテーブルについては、non_replicated_deduplication_window を参照してください。

例:

CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- the next insert won't be deduplicated because insert_deduplication_token is different
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- the next insert will be deduplicated because insert_deduplication_token
-- is the same as one of the previous
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

insert_null_as_default

Bool
デフォルト値
1

Nullable ではないデータ型のカラムに対して、NULL の代わりに デフォルト値 を挿入するかどうかを切り替えます。 カラム型が Nullable ではなく、この設定が無効な場合、NULL を挿入すると例外が発生します。カラム型が Nullable の場合は、この設定に関係なく、NULL 値はそのまま挿入されます。

この設定は INSERT … SELECT クエリに適用されます。SELECT サブクエリは UNION ALL 句で連結できる点に注意してください。

設定可能な値:

  • 0 — Nullable ではないカラムに NULL を挿入すると例外が発生します。
  • 1 — NULL の代わりにカラムのデフォルト値が挿入されます。

insert_shard_id

UInt64
デフォルト値
0

0 でない場合、データを同期的に挿入する Distributed テーブルの分片を指定します。

insert_shard_id の値が正しくない場合、サーバーは例外をスローします。

requested_cluster の分片数を取得するには、サーバーの設定を確認するか、このクエリを使用します。

SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';

設定可能な値:

  • 0 — 無効。
  • 対応する Distributed テーブルの 1 から shards_num までの任意の数値。

クエリ:

CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;

結果:

┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
Navigation