input
input(structure) - табличная функция, позволяющая эффективно преобразовывать и вставлять отправленные на сервер данные,
имеющие структуру 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с одновременным преобразованием и использованием функций выглядит так:
- Если в
data.csvлежат данные той же структурыtest_structure, что и у таблицыtest, то следующие два запроса эквивалентны: