> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 주어진 구조로 서버에 전송된 데이터를 다른 구조의 테이블로 효율적으로 변환해 삽입할 수 있게 해주는 테이블 함수입니다.

# input

`input(structure)` - 주어진 구조로 서버에 전송된 데이터를 다른 구조의 테이블로 효율적으로 변환해 삽입할 수 있게 해주는
테이블 함수입니다.

`structure` - 다음 형식의 서버로 전송되는 데이터 구조입니다: `'column1_name column1_type, column2_name column2_type, ...'`.
예를 들어 `'id UInt32, name String'`입니다.

이 함수는 `INSERT SELECT` 쿼리에서만 한 번 사용할 수 있으며, 그 외에는 일반적인 테이블 함수처럼 동작합니다
(예를 들어, 서브쿼리 등에서 사용할 수 있습니다).

데이터는 일반 `INSERT` 쿼리와 같은 방식으로 전송할 수 있으며, 사용 가능한 모든 [포맷](/ko/reference/formats)으로 전달할 수 있습니다.
이 포맷은 쿼리 끝에 지정해야 합니다(일반 `INSERT SELECT`와는 다릅니다).

이 함수의 주요 기능은 서버가 클라이언트로부터 데이터를 수신할 때 `SELECT` 절의 표현식 목록에 따라 이를 동시에 변환하여
대상 테이블에 삽입한다는 점입니다. 전송된 모든 데이터를 담는 임시 테이블은 생성되지 않습니다.

<div id="examples">
  ## 예시
</div>

* `test` 테이블의 구조가 `(a String, b String)`이고 `data.csv`의 데이터 구조가 `(col1 String, col2 Date, col3 Int32)`로 서로 다르다고 가정하겠습니다. `data.csv`의 데이터를 변환하면서 동시에 `test` 테이블에 삽입하는 쿼리는 다음과 같습니다:

```bash theme={null}
$ 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`와 동일한 구조인 `test_structure` 형식의 데이터가 포함되어 있으면, 다음 두 쿼리는 동일합니다:

```bash theme={null}
$ 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"
```
