ClickHouse/docs/ja/sql-reference/table-functions/input.md
2024-11-18 11:58:58 +09:00

2.2 KiB

slug sidebar_position sidebar_label
/ja/sql-reference/table-functions/input 95 input

input

input(structure) - 指定された構造でサーバーに送信されたデータを別の構造のテーブルに効率的に変換し、挿入するためのテーブル関数です。

structure - サーバーに送信されるデータの構造を次の形式で指定します: 'column1_name column1_type, column2_name column2_type, ...'。 例えば、'id UInt32, name String'

この関数はINSERT SELECTクエリでのみ使用でき、一度しか使用できませんが、それ以外は通常のテーブル関数のように動作します (例えば、サブクエリで使用することができます)。

データは通常のINSERTクエリのように任意の方法で送信でき、クエリの最後に指定する必要がある任意の利用可能な形式で渡すことができます(通常のINSERT SELECTとは異なります)。

この関数の主な機能は、サーバーがクライアントからデータを受信すると、SELECT句の式リストに従って同時に変換し、ターゲットテーブルに挿入することです。すべての転送データを格納する一時テーブルは作成されません。

  • testテーブルが次の構造(a String, b String)を持ち、data.csvのデータが異なる構造(col1 String, col2 Date, col3 Int32)を持っているとします。この場合、data.csvからtestテーブルにデータを同時に変換して挿入するクエリは次のようになります:
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT lower(col1), col3 * col3 FROM input('col1 String, col2 Date, col3 Int32') FORMAT CSV";
  • data.csvにテーブルtestと同じ構造test_structureのデータが含まれている場合、これら二つのクエリは同等です:
$ cat data.csv | clickhouse-client --query="INSERT INTO test FORMAT CSV"
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT * FROM input('test_structure') FORMAT CSV"