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
, то эти два запроса равнозначны: