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테이블에 삽입하는 쿼리는 다음과 같습니다:
data.csv에 테이블test와 동일한 구조인test_structure형식의 데이터가 포함되어 있으면, 다음 두 쿼리는 동일합니다: