Перейти к основному содержанию
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 с одновременным преобразованием выглядит следующим образом:
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT lower(col1), col3 * col3 FROM input('col1 String, col2 Date, col3 Int32') FORMAT CSV";
  • Если data.csv содержит данные той же структуры test_structure, что и в таблице test, то эти два запроса эквивалентны:
$ cat data.csv | clickhouse-client --query="INSERT INTO test FORMAT CSV"
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT * FROM input('test_structure') FORMAT CSV"
Последнее изменение 10 июня 2026 г.