メインコンテンツまでスキップ
メインコンテンツまでスキップ

input テーブル関数

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

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

この関数は INSERT SELECT クエリ内でのみ使用でき、1回のみ使用可能ですが、その他は通常のテーブル関数と同様に動作します(例えば、サブクエリ内で使用することができます)。

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

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

  • test テーブルの構造が (a String, b String) であり、data.csv 内のデータが異なる構造 (col1 String, col2 Date, col3 Int32) を持っているとします。data.csv から test テーブルに同時に変換してデータを挿入するためのクエリは次のようになります:
  • data.csv がテーブル test と同じ構造 test_structure のデータを含んでいる場合、これら2つのクエリは等しくなります: