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