mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-08 08:35:20 +00:00
9ec78855cd
* DOCSUP-2806: Add meta intro. * DOCSUP-2806: Update meta intro. * DOCSUP-2806: Fix meta. * DOCSUP-2806: Add quotes for meta headers. * DOCSUP-2806: Remove quotes from meta headers. * DOCSUP-2806: Add meta headers. * DOCSUP-2806: Fix quotes in meta headers. * DOCSUP-2806: Update meta headers. * DOCSUP-2806: Fix link to nowhere in EN. * DOCSUP-2806: Fix link (settings to tune) * DOCSUP-2806: Fix links. * DOCSUP-2806:Fix links EN * DOCSUP-2806: Fix build errors. * DOCSUP-2806: Fix meta intro. * DOCSUP-2806: Fix toc_priority in examples datasets TOC. * DOCSUP-2806: Fix items order in toc. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc order. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc index in create * DOCSUP-2806: Fix toc order in create. Co-authored-by: romanzhukov <romanzhukov@yandex-team.ru> Co-authored-by: alexey-milovidov <milovidov@yandex-team.ru>
47 lines
2.9 KiB
Markdown
47 lines
2.9 KiB
Markdown
---
|
||
toc_priority: 46
|
||
toc_title: input
|
||
---
|
||
|
||
# input {#input}
|
||
|
||
`input(structure)` - табличная функция, позволяющая эффективно преобразовывать и вставлять отправленные на сервер данные,
|
||
имеющие структуру `structure`, в таблицу другой структуры.
|
||
|
||
`structure` - структура отправляемых на сервер данных в формате `'column1_name column1_type, column2_name column2_type, ...'`.
|
||
Например: `'id UInt32, name String'`.
|
||
|
||
Данная функция может быть использована только в запросе `INSERT SELECT` и только один раз, но в остальном ведет себя
|
||
как обычная табличная функция (можно указать в подзапросе и т.д.).
|
||
|
||
Данные можно отправлять любым стандартным способом как для обычного `INSERT` запроса и в любом
|
||
доступном [формате](../../interfaces/formats.md#formats), который указывается в конце
|
||
запроса (в отличие от обычного `INSERT SELECT`).
|
||
|
||
Главная особенность данной функции в том, что сервер при получении данных от клиента
|
||
одновременно преобразует их в соответствии со списком выражений в `SELECT` части и вставляет в целевую таблицу. Временная таблица
|
||
со всеми переданными данными не создается.
|
||
|
||
**Примеры**
|
||
|
||
- Пусть у таблицы `test` следующая структура `(a String, b String)`,
|
||
а в файле `data.csv` данные имеют другую структуру `(col1 String, col2 Date, col3 Int32)`. Запрос для вставки
|
||
данных из файла `data.csv` в таблицу `test` с одновременным преобразованием и использованием функций выглядит так:
|
||
|
||
<!-- -->
|
||
|
||
``` bash
|
||
$ 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`, то следующие два запроса эквивалентны:
|
||
|
||
<!-- -->
|
||
|
||
``` bash
|
||
$ 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"
|
||
```
|
||
|
||
[Оригинальная статья](https://clickhouse.tech/docs/ru/query_language/table_functions/input/) <!--hide-->
|