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つのクエリは等価です:
