ApsaraDB for ClickHouse のテーブルに行を挿入します。
構文
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...テーブルスキーマで定義されているものの、文にリストされていない列については、ApsaraDB for ClickHouse は次のルールを使用して値を入力します:
| 条件 | 動作 |
|---|---|
| 列にデフォルト式が定義されている場合 | 式を評価し、その結果を挿入します |
| デフォルト式が定義されていない場合 | 0 または空の文字列を挿入します |
INSERT INTO での SELECT の使用
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...SELECT の結果の列は、厳密な位置順で INSERT INTO の列にマッピングされます。列名が一致する必要はありません。ApsaraDB for ClickHouse は必要に応じてデータ型を自動的に変換します。
式のサポート
VALUES 形式のみが now() や 1 + 2 のようなインライン式をサポートします。VALUES を使用する場合でも、インライン式の使用は避けてください。行ごとに評価すると非効率です。代わりに、挿入前に値を計算してください。
パフォーマンスに関する考慮事項
ApsaraDB for ClickHouse が INSERT INTO 文を実行すると、データは直ちに処理されます。具体的には、プライマリキーによるソートとデータのパーティショニングが行われます。挿入するデータが複数月にまたがる場合、挿入パフォーマンスは著しく低下します。
高い挿入スループットを維持するには、次の点に注意してください:
一度に大量のデータを書き込みます。たとえば、毎回 100,000 行のデータを書き込むことができます。
データを ApsaraDB for ClickHouse クラスターに書き込む前に、データをグループ化します。
以下のシナリオでは、挿入パフォーマンスは影響を受けません:
データはリアルタイムで書き込まれます。
書き込むデータがすでに時間順にソートされている場合。