Excel 내보내기

Excel 내보내기 (Excel Export)

DuckDB는 excel 확장을 통해 데이터를 Excel .xlsx 파일로 내보낼 수 있어요. 단, .xls 파일은 지원되지 않는다는 점을 미리 기억해 두세요!

출처: DuckDB 공식 문서 — excel-export

확장 설치와 로딩

확장을 설치하고 불러오려면 다음을 실행해요.

INSTALL excel;
LOAD excel;

Excel 시트 내보내기 (Exporting Excel Sheets)

테이블을 Excel 파일로 내보내려면 FORMAT xlsx 옵션과 함께 COPY 문을 사용해요.

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx);

쿼리의 결과도 직접 Excel 파일로 내보낼 수 있어요.

COPY (SELECT * FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

또는 이렇게 쓸 수도 있어요. (xlsx 형식이 기본이기 때문이죠.)

COPY (SELECT * FROM tbl) TO 'output.xlsx';

Excel 파일의 첫 줄에 컬럼 이름을 쓰려면 HEADER 옵션을 사용해요.

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, HEADER true);

결과 Excel 파일에서 워크시트 이름을 지정하려면 SHEET 옵션을 사용해요.

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, SHEET 'Sheet1');

타입 변환 (Type Conversions)

Excel은 실제로 숫자나 문자열(즉 VARCHARDOUBLE에 해당하는 타입)만 제대로 저장할 수 있기 때문에, XLSX 파일을 쓸 때 다음 타입 변환이 자동으로 적용됩니다.

  • 숫자 타입은 DOUBLE로 캐스팅돼요.
  • 시간 계열 타입(TIMESTAMP, DATE, TIME 등)은 Excel의 "serial" 숫자로 변환돼요. 즉 날짜는 1900-01-01 이후의 일(day) 수, 시간은 하루의 분수(fraction)로 표현되죠. 그리고 "number format"으로 스타일이 지정되어 Excel에서 열면 날짜나 시간으로 보여요.
  • TIMESTAMP_TZTIME_TZ는 각각 UTC TIMESTAMPTIME으로 캐스팅되는데, 이때 시간대 정보는 사라져요.
  • BOOLEAN10으로 변환되고, "number format"이 적용되어 Excel에서 TRUE/FALSE처럼 보여요.
  • 그 외의 모든 타입은 VARCHAR로 캐스팅된 뒤 텍스트 셀로 쓰여요.

물론 Excel로 내보내기 전에 컬럼을 다른 타입으로 명시적으로 캐스팅할 수도 있어요.

COPY (SELECT CAST(a AS VARCHAR), b FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

함께 보기 (See Also)

DuckDB는 Excel 파일을 가져오는 것도 지원해요. Excel 지원에 대한 추가 세부 내용은 excel 확장 페이지를 참고하세요.

더 알아보기 (Learn more)