mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 09:32:06 +00:00
Added docs for input()
This commit is contained in:
parent
ed0d09e250
commit
f1cdffb574
@ -54,6 +54,8 @@ None of the data formats except Values allow setting values to expressions such
|
||||
Other queries for modifying data parts are not supported: `UPDATE`, `DELETE`, `REPLACE`, `MERGE`, `UPSERT`, `INSERT UPDATE`.
|
||||
However, you can delete old data using `ALTER TABLE ... DROP PARTITION`.
|
||||
|
||||
`FORMAT` clause must be specified in the end of query if `SELECT` clause contains table function [input()](table_functions/input.md).
|
||||
|
||||
### Performance Considerations
|
||||
|
||||
`INSERT` sorts the input data by primary key and splits them into partitions by month. If you insert data for mixed months, it can significantly reduce the performance of the `INSERT` query. To avoid this:
|
||||
|
35
docs/en/query_language/table_functions/input.md
Normal file
35
docs/en/query_language/table_functions/input.md
Normal file
@ -0,0 +1,35 @@
|
||||
# input
|
||||
|
||||
`input(structure)` - table function that allows effectively convert and insert data sent to the
|
||||
server with given structure to the table with another structure.
|
||||
|
||||
`structure` - structure of data sent to the server in following format `'column1_name column1_type, column2_name column2_type, ...'`.
|
||||
For example, `'id UInt32, name String'`.
|
||||
|
||||
This function can be used only in `INSERT SELECT` query and only once but otherwise behaves like ordinary table function
|
||||
(for example, it can be used in subquery, etc.).
|
||||
|
||||
Data can be sent in any way like for ordinary `INSERT` query and passed in any available [format](../../interfaces/formats.md#formats)
|
||||
that must be specified in the end of query (unlike ordinary `INSERT SELECT`).
|
||||
|
||||
The main feature of this function is that when server receives data from client it simultaneously converts it
|
||||
according to the list of expressions in the `SELECT` clause and inserts into the target table. Temporary table
|
||||
with all transferred data is not created.
|
||||
|
||||
**Examples**
|
||||
|
||||
- Let the `test` table has the following structure `(a String, b String)`
|
||||
and data in `data.csv` has a different structure `(col1 String, col2 Date, col3 Int32)`. Query for insert
|
||||
data from the `data.csv` into the `test` table with simultaneous conversion looks like this:
|
||||
|
||||
```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";
|
||||
```
|
||||
|
||||
- If `data.csv` contains data of the same structure `test_structure` as the table `test` then these two queries are equal:
|
||||
```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"
|
||||
```
|
||||
|
||||
[Original article](https://clickhouse.yandex/docs/en/query_language/table_functions/input/) <!--hide-->
|
@ -53,6 +53,9 @@ INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
|
||||
Не поддерживаются другие запросы на модификацию части данных: `UPDATE`, `DELETE`, `REPLACE`, `MERGE`, `UPSERT`, `INSERT UPDATE`.
|
||||
Вы можете удалять старые данные с помощью запроса `ALTER TABLE ... DROP PARTITION`.
|
||||
|
||||
Для табличной функции [input()](table_functions/input.md) после секции `SELECT` должна следовать
|
||||
секция `FORMAT`.
|
||||
|
||||
### Замечания о производительности
|
||||
|
||||
`INSERT` сортирует входящие данные по первичному ключу и разбивает их на партиции по месяцам. Если вы вставляете данные за разные месяцы вперемешку, то это может значительно снизить производительность запроса `INSERT`. Чтобы избежать этого:
|
||||
|
35
docs/ru/query_language/table_functions/input.md
Normal file
35
docs/ru/query_language/table_functions/input.md
Normal file
@ -0,0 +1,35 @@
|
||||
# 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.yandex/docs/ru/query_language/table_functions/input/) <!--hide-->
|
@ -152,6 +152,7 @@ nav:
|
||||
- 'mysql': 'query_language/table_functions/mysql.md'
|
||||
- 'jdbc': 'query_language/table_functions/jdbc.md'
|
||||
- 'odbc': 'query_language/table_functions/odbc.md'
|
||||
- 'input': 'query_language/table_functions/input.md'
|
||||
- 'Dictionaries':
|
||||
- 'Introduction': 'query_language/dicts/index.md'
|
||||
- 'External Dictionaries':
|
||||
|
@ -152,6 +152,7 @@ nav:
|
||||
- 'mysql': 'query_language/table_functions/mysql.md'
|
||||
- 'jdbc': 'query_language/table_functions/jdbc.md'
|
||||
- 'odbc': 'query_language/table_functions/odbc.md'
|
||||
- 'input': 'query_language/table_functions/input.md'
|
||||
- 'Словари':
|
||||
- 'Введение': 'query_language/dicts/index.md'
|
||||
- 'Внешние словари':
|
||||
|
Loading…
Reference in New Issue
Block a user