메인 콘텐츠로 건너뛰기
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와 동일한 구조인 test_structure 형식의 데이터가 포함되어 있으면, 다음 두 쿼리는 동일합니다:
$ 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"
마지막 수정일 2026년 6월 10일