Parquet 가져오기
Parquet 가져오기 (Parquet Import)
Parquet 파일에서 데이터를 읽으려면 쿼리의 FROM 절에 read_parquet 함수를 사용해요. 표준 CSV보다 훨씬 효율적인 형식이라 큰 데이터를 다룰 때 특히 유용하죠.
Parquet 파일 읽기
Parquet 파일에서 데이터를 읽으려면 쿼리의 FROM 절에 read_parquet 함수를 사용해요.
SELECT * FROM read_parquet('input.parquet');
함수 생략하고 읽기
혹은 read_parquet 함수를 생략하고, DuckDB가 확장자에서 알아서 판단하게 할 수도 있어요.
SELECT * FROM 'input.parquet';
새 테이블 만들기
쿼리 결과로 새 테이블을 만들려면 CREATE TABLE ... AS SELECT 문을 사용해요.
CREATE TABLE new_tbl AS
SELECT * FROM read_parquet('input.parquet');
기존 테이블에 로드하기
쿼리 결과를 기존 테이블에 넣으려면 SELECT 문에서 INSERT INTO를 사용해요.
INSERT INTO tbl
SELECT * FROM read_parquet('input.parquet');
COPY 문 사용하기
또는 COPY 문으로 Parquet 파일의 데이터를 기존 테이블에 넣을 수도 있어요.
COPY tbl FROM 'input.parquet' (FORMAT parquet);
스키마를 즉석에서 조정하기 (Adjusting the Schema on the Fly)
Parquet 파일을 조금 다른 스키마(예: 컬럼 수가 다르거나, 더 유연한 타입)로 로드하고 싶을 때 쓸 수 있는 트릭이 있어요.
c1과 c2 두 개의 컬럼을 가진 Parquet 파일이 있다고 가정해 봐요.
COPY (FROM (VALUES (42, 43)) t(c1, c2))
TO 'f.parquet';
파일에 없는 c3 컬럼을 추가하려면 다음을 실행해요.
FROM (VALUES (NULL::VARCHAR, NULL, NULL)) t(c1, c2, c3)
WHERE false
UNION ALL BY NAME
FROM 'f.parquet';
첫 번째 FROM 절은 c1이 VARCHAR인 세 개 컬럼을 가진 빈 테이블을 만들어요. 그런 다음 UNION ALL BY NAME으로 Parquet 파일을 합치죠. 결과는 다음과 같아요.
┌─────────┬───────┬───────┐
│ c1 │ c2 │ c3 │
│ varchar │ int32 │ int32 │
├─────────┼───────┼───────┤
│ 42 │ 43 │ NULL │
└─────────┴───────┴───────┘
추가 옵션들은 Parquet 로딩 레퍼런스를 참고하세요.