출력 형식

출력 형식 (Output Formats)

.mode [dot 명령]({% link docs/current/clients/cli/dot_commands.md %})을 사용하면 터미널 출력에서 반환되는 테이블의 모양을 바꿀 수 있어요. 모양 커스터마이징 외에도 이 모드들은 추가적인 이점이 있답니다. 함께 살펴볼까요?

출처: 문서

본문

.mode [dot 명령]({% link docs/current/clients/cli/dot_commands.md %})을 사용하면 터미널 출력에서 반환되는 테이블의 모양을 바꿀 수 있어요. 모양 커스터마이징 외에도, 이러한 모드들은 추가적인 이점이 있어요. 터미널 [출력을 파일로]({% link docs/current/clients/cli/dot_commands.md %}#output-writing-results-to-a-file) 리다이렉트해서 DuckDB 출력을 다른 곳에 보여주는 데 유용할 수 있어요. insert 모드를 사용하면 나중에 데이터를 삽입하는 데 쓸 수 있는 일련의 SQL 문장을 만들어 줘요. markdown 모드는 문서를 만들 때 특히 유용하고, latex 모드는 학술 논문을 쓸 때 유용해요.

경고 Windows Terminal에서의 Unicode 처리

Windows Terminal에서 긴 결과가 표시될 때 기본적으로 more 시스템 유틸리티를 사용해 결과를 스크롤해요. 이 유틸리티는 Unicode를 불완전하게 지원해서, 출력 데이터에 따라 어떤 경우에는 Unicode 문자를 깨진 형태로 표시할 수 있어요.

대신 Git for Windows 설치 시 기본적으로 함께 설치되는 서드파티 less 유틸리티를 사용하는 것을 권장해요. 다음과 같이 활성화할 수 있어요:

.pager '"C:\Program Files\Git\usr\bin\less.exe" -R'

출력 형식 목록 (List of Output Formats)

Mode 설명 (Description)
ascii 0x1F와 0x1E로 구분된 컬럼/행
box 유니코드 박스 드로잉 문자를 사용하는 테이블
csv 쉼표로 구분된 값
column 컬럼으로 출력 (.width 참고)
duckbox 다양한 기능을 가진 테이블 (기본값)
html HTML <table> 코드
insert ⟨TABLE⟩{:.language-sql .highlight} ⟨TABLE⟩{:.language-sql .highlight}을 위한 SQL insert 문장
json JSON 배열로 결과
jsonlines NDJSON으로 결과
latex LaTeX tabular 환경 코드
line 한 줄에 하나의 값
list `
markdown Markdown 테이블 형식
quote SQL처럼 이스케이프된 답변
table ASCII-art 테이블
tabs 탭으로 구분된 값
tcl TCL 목록 요소
trash 출력 없음

출력 형식 바꾸기 (Changing the Output Format)

베이직 .mode dot 명령으로 현재 사용 중인 모양을 조회할 수 있어요.

.mode
current output mode: duckbox

인자를 가진 .mode dot 명령으로 출력 형식을 설정해요.

.mode markdown
SELECT 'quacking intensifies' AS incoming_ducks;
|    incoming_ducks    |
|----------------------|
| quacking intensifies |

출력 모양은 .separator 명령으로도 조정할 수 있어요. 구분자에 의존하는 내보내기 모드(csvtabs 같은)를 사용할 때, 구분자는 모드가 바뀌면 리셋돼요. 예를 들어 .mode csv는 구분자를 쉼표(,)로 설정해요. 그 다음 .separator "|"를 사용하면 출력이 파이프 구분으로 바뀌어요.

.mode csv
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1,col_2
1,2
10,20
.separator "|"
SELECT 1 AS col_1, 2 AS col_2
UNION ALL
SELECT 10 AS col1, 20 AS col_2;
col_1|col_2
1|2
10|20

페이징 (Paging)

CLI는 .pager 명령으로 큰 결과 집합의 페이징을 지원해요. 활성화하면 터미널 크기를 초과하는 결과가 (less 같은) 페이저에 표시되어 더 쉽게 탐색할 수 있어요.

페이저에는 세 가지 모드가 있어요:

  • automatic (기본값) – 결과가 행 또는 컬럼 임계값을 초과하면 페이저가 트리거돼요.
  • on – 페이저가 항상 출력에 사용돼요.
  • off – 페이저가 비활성화돼요.
.pager on
.pager off
.pager automatic

자동 모드에서는 페이저를 트리거하는 임계값을 구성할 수 있어요:

.pager set_row_threshold 50
.pager set_column_threshold 5

인자로 전달해서 커스텀 페이저 명령을 설정할 수도 있어요:

.pager less -RS

기본 페이저 명령은 DUCKDB_PAGER 또는 PAGER 환경 변수로도 구성할 수 있어요.

duckbox 모드

기본적으로 DuckDB는 쿼리 결과를 duckbox 모드로 렌더링하는데, 이는 기능이 풍부한 ASCII-art 스타일 출력 형식이에요.

duckbox 모드는 큰 숫자를 사람이 읽기 좋게 렌더링할 수 있게 해주는 large_number_rendering 옵션을 지원해요. 세 단계가 있어요:

  • off – 모든 숫자가 일반 형식으로 출력돼요.
  • footer (기본값) – 큰 숫자에 사람이 읽기 좋은 형식이 추가돼요. 단일 행 결과에만 적용돼요.
  • all – 모든 큰 숫자가 사람이 읽기 좋은 형식으로 대체돼요.

다음 예시를 보세요:

.large_number_rendering off
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│         x         │
│      double       │
├───────────────────┤
│ 3141592653.589793 │
└───────────────────┘
.large_number_rendering footer
SELECT pi() * 1_000_000_000 AS x;
┌───────────────────┐
│         x         │
│      double       │
├───────────────────┤
│ 3141592653.589793 │
│  (3.14 billion)   │
└───────────────────┘
.large_number_rendering all
SELECT pi() * 1_000_000_000 AS x;
┌──────────────┐
│      x       │
│    double    │
├──────────────┤
│ 3.14 billion │
└──────────────┘

더 알아보기 (Learn more)