Функция таблицы 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, тогда эти два запроса равны: