구문
인수
db_path— SQLite 데이터베이스가 있는 파일의 경로입니다. String.table_name— SQLite 데이터베이스의 테이블 이름 또는 SQLite에 그대로 전달할 쿼리입니다(테이블 이름 대신 쿼리 전달 참조). String.
반환 값
- 원본
SQLite테이블과 동일한 컬럼을 갖는 테이블 객체입니다.
테이블 이름 대신 쿼리 전달하기
테이블 이름 대신 두 번째 인수로 SQLite에 그대로 전달되는SELECT 쿼리를 사용할 수 있습니다. 결과로 생성되는 테이블의 구조는 쿼리 결과로부터 추론됩니다. 쿼리는 서브쿼리로 작성하거나 query 함수로 감싸 작성할 수 있습니다:
INSERT할 수 없습니다. 동일한 구문이 SQLite 테이블 엔진에서도 지원됩니다.
서브쿼리(subquery) 형식인
(SELECT ...)는 ClickHouse에서 파싱된 후 다시 직렬화되어 SQLite로 전송됩니다. 따라서 유효한 ClickHouse SQL이어야 합니다. ClickHouse가 파싱하지 않는 SQLite 전용 구문을 전달하려면 query('...') 형식을 사용하십시오. 이 형식의 텍스트는 그대로 SQLite로 전송됩니다.전달된 쿼리로는 바깥쪽 WHERE, LIMIT, 집계 등 주변 ClickHouse 쿼리의 요소가 푸시다운되지 않습니다. 대신 전체 쿼리 결과를 가져온 후 ClickHouse에서 적용됩니다. SQLite에서 읽는 데이터를 제한하려면 필터를 전달된 쿼리 내부에 넣으십시오. external_table_strict_query = 1을 사용하면 전달된 쿼리로 푸시다운할 수 없는 테이블 함수의 컬럼에 대한 바깥쪽 필터는 로컬에서 적용되지 않고 예외와 함께 거부됩니다. 이 검사는 최상위 수준의 WHERE 프레디케이트와 최상위 수준 AND의 각 결합항을 대상으로 합니다. 이 테이블의 컬럼에 대한 PREWHERE는 이 설정의 대상이 아닙니다. 이 테이블 엔진은 PREWHERE를 지원하지 않으며, 이러한 쿼리는 설정과 관계없이 ILLEGAL_PREWHERE로 거부됩니다. 필터를 실제로 푸시다운할 수 있는 경우에만 검사가 실행됩니다. 즉, 이 테이블이 쿼리의 유일한 테이블이거나, INNER JOIN의 양쪽 중 한쪽이거나, 외부 조인의 보존 측(LEFT JOIN의 왼쪽, RIGHT JOIN의 오른쪽)인 경우입니다. LEFT/RIGHT JOIN의 비보존 측과 FULL JOIN의 양쪽에서는 아무것도 푸시다운되거나 검사되지 않으므로, 엄격 모드에서도 이 테이블의 컬럼에 대한 필터는 조인 후 로컬에서 적용됩니다. 검사가 실행되는 경우, 주변 쿼리에서 조인된 다른 테이블을 참조하는 프레디케이트는 조인된 측만 참조하든 하나의 비-AND 표현식(예: OR) 안에서 이 테이블과 함께 참조하든 푸시다운되지 않으며 검사에서 제외됩니다. 이러한 프레디케이트는 일반적인 ClickHouse 평가 시점(조인 후 WHERE, 조인 전 PREWHERE)을 유지하며 거부되지 않습니다.예시
Query
Response
관련
- SQLite 테이블 엔진
- SQLite 데이터베이스 엔진 — 데이터 타입 지원 섹션