출력 형식
출력 형식 (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 명령으로도 조정할 수 있어요. 구분자에 의존하는 내보내기 모드(csv나 tabs 같은)를 사용할 때, 구분자는 모드가 바뀌면 리셋돼요. 예를 들어 .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 │
└──────────────┘