SELECT 쿼리와 함께 쿼리 처리에 필요한 데이터를 서버로 전송할 수 있습니다. 이 데이터는 임시 테이블(「Temporary tables」 섹션 참조)에 저장되며, 쿼리에서 사용할 수 있습니다(예: IN 연산자).
예를 들어, 중요한 사용자 식별자가 들어 있는 텍스트 파일이 있다면, 이 목록을 기준으로 필터링하는 쿼리와 함께 해당 파일을 서버에 업로드할 수 있습니다.
대용량 외부 데이터로 여러 쿼리를 실행해야 한다면, 이 기능은 사용하지 않는 것이 좋습니다. 데이터를 미리 DB에 업로드하는 편이 더 좋습니다.
외부 데이터는 command-line client(비대화형 모드) 또는 HTTP 인터페이스를 사용해 업로드할 수 있습니다.
command-line client에서는 다음 포맷으로 매개변수 섹션을 지정할 수 있습니다.
UInt64,String. 컬럼 이름은 _1, _2, …로 지정됩니다.
–structure– UserID UInt64, URL String 포맷의 테이블 구조입니다. 컬럼 이름과 타입을 정의합니다.
‘file’에 지정된 파일은 ‘format’에 지정된 포맷으로 파싱되며, 이때 ‘types’ 또는 ‘structure’에 지정된 데이터 타입이 사용됩니다. 이 테이블은 서버에 업로드되며, 서버에서 ‘name’에 지정된 이름의 임시 테이블로 사용할 수 있습니다.
예시:
query_string에는 name_format, name_types, name_structure 매개변수가 전달되며, 여기서 name은 각 매개변수가 대응하는 테이블 이름입니다. 이 매개변수의 의미는 command-line client를 사용할 때와 동일합니다.
예시: