SQLite | SQLite 명령어 | SELECT 문의 표시 모드를 변경 (.mode 명령)

.mode 명령을 실행하여 SELECT 문 등을 실행한 결과의 표시 모드를 변경 할 수 있다. 여기에서는 .mode 명령의 사용법에 대해 설명한다.

.mode 명령 사용법

.mode 명령을 사용하면 SELECT 문의 실행 결과에 표시되는 데이터를 쉼표로 구분하여 표시할 것인지, 아니면 탭으로 구분하여 표시할 것인지 등을 설정할 수 있다. 사용법은 다음과 같다.

.mode MODE? TABLE?

1번째의 인수로 모드를 지정한다. 가능한 값은 다음과 같다.

인수 설명
csv 쉼표로 구분하여 출력한다.
column 컬럼마다 왼쪽 정렬하여 출력한다.
html HTML의 TABLE 형식으로 출력한다.
insert INSERT 문으로 출력한다.
line 각 컬럼마다 행을 나누어 출력한다.
list 구분 기호로 컬럼을 구분하여 행으로 출력한다. (기본 설정)
quote SQL 리터럴로 출력한다.
tabs 탭으로 구분된 출력한다.
tcl TCL의 list 형식으로 출력한다.

그럼 각각의 모드에 대해 차례로 확인해 보자.

먼저, 각 모드를 확인하기 위해 예제가 되는 테이블을 만들고 데이터를 추가한다.

create table user (id integer, name text, address text);
insert into user values (1, 'devkuma', 'Seoul');
insert into user values (2, 'kimkc', 'Busan');
insert into user values (3, 'araikuma', 'Seoul');
insert into user values (4, 'happykuma', 'Seoul');
insert into user values (5, 'mykuma', 'Daejeon');
sqlite> create table user (id integer, name text, address text);
sqlite>
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (2, 'kimkc', 'Busan');
sqlite> insert into user values (3, 'araikuma', 'Seoul');
sqlite> insert into user values (4, 'happykuma', 'Seoul');
sqlite> insert into user values (5, 'mykuma', 'Daejeon');
sqlite> 

list 모드

list 모드는 조회한 데이터를 각 행마다 1행으로 출력한다. 하나의 행에 저장된 데이터는 컬럼마다 현재 설정되어 있는 구분 기호로 구분하여 출력한다.

.mode list

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode list
sqlite> 
sqlite> select * from user;
1|devkuma|Seoul
2|kimkc|Busan
3|araikuma|Seoul
4|happykuma|Seoul
5|mykuma|Daejeon
sqlite> 

여기서 구분자는 “.separator” 명령으로 변경할 수 있다.

csv 모드

csv 모드는 조회한 데이터를 각 행마다 1행으로 출력한다. 하나의 행에 저장된 데이터는 컬럼마다 쉼표(,)로 구분하여 출력한다.

.mode csv

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode csv
sqlite> 
sqlite> select * from user;
1,devkuma,Seoul
2,kimkc,Busan
3,araikuma,Seoul
4,happykuma,Seoul
5,mykuma,Daejeon
sqlite> 

tabs 모드

tabs 모드는 조회한 데이터를 각 행마다 1행으로 출력한다. 하나의 행에 저장된 데이터는 컬럼마다 탭으로 구분하여 출력된다.

.mode tabs

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode tabs
sqlite> 
sqlite> select * from user;
1	devkuma	Seoul
2	kimkc	Busan
3	araikuma	Seoul
4	happykuma	Seoul
5	mykuma	Daejeon
sqlite> 

탭은 8 문자 간격으로 설정되어있는 것 같습니다.

column 모드

column 모드는 조회한 데이터를 각 행마다 1행으로 출력한다. 하나의 행에 저당된 데이터는 컬럼마다 왼쪽 정렬하여 출력한다.

.mode column

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode column
sqlite> 
sqlite> select * from user;
1           devkuma     Seoul     
2           kimkc       Busan     
3           araikuma    Seoul     
4           happykuma   Seoul     
5           mykuma      Daejeon   
sqlite> 

컬럼마다의 폭은 정해져 있고 폭을 초과하는 데이터가 있으면 잘려서 표시된다. 여기서 컬럼마다의 폭은 .width 명령으로 변경할 수 있다.

line 모드

line 모드는 조회한 데이터를 한줄씩 처리하고, 컬럼마다 행(row)을 변경하여 표시된다.

.mode line

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> select * from user;
     id = 1
   name = devkuma
address = Seoul

     id = 2
   name = kimkc
address = Busan

     id = 3
   name = araikuma
address = Seoul

     id = 4
   name = happykuma
address = Seoul

     id = 5
   name = mykuma
address = Daejeon
sqlite> 

조회한 데이터의 각 행에 1컬럼 1행으로 “컬럼명 = 값"의 형식으로 표시한다.

html 모드

html 모드는 조회한 데이터를 HTML의 TABLE 형식으로 변환하여 표시한다.

.mode html

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode html
sqlite> 
sqlite> select * from user;
<TR><TD>1</TD>
<TD>devkuma</TD>
<TD>Seoul</TD>
</TR>
<TR><TD>2</TD>
<TD>kimkc</TD>
<TD>Busan</TD>
</TR>
<TR><TD>3</TD>
<TD>araikuma</TD>
<TD>Seoul</TD>
</TR>
<TR><TD>4</TD>
<TD>happykuma</TD>
<TD>Seoul</TD>
</TR>
<TR><TD>5</TD>
<TD>mykuma</TD>
<TD>Daejeon</TD>
</TR>
sqlite> 

각 행에 <tr> 요소를 가져와 컬럼마다 <td> 요소로 표시된다. 단, <table> 요소는 작성되지 않는다는 점을 주의하자.

tcl 모드

tcl 모드는 조회한 데이터를 TCL 목록 형식으로 변환하여 표시한다.

.mode tcl

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> select * from user;
"1" "devkuma" "Seoul"
"2" "kimkc" "Busan"
"3" "araikuma" "Seoul"
"4" "happykuma" "Seoul"
"5" "mykuma" "Daejeon"
sqlite> 

insert 모드

insert 모드는 조회한 데이터를 각 행에 데이터를 추가할 때의 INSERT 문 형식으로 표시한다.

.mode insert

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> select * from user;
INSERT INTO "table" VALUES(1,'devkuma','Seoul');
INSERT INTO "table" VALUES(2,'kimkc','Busan');
INSERT INTO "table" VALUES(3,'araikuma','Seoul');
INSERT INTO "table" VALUES(4,'happykuma','Seoul');
INSERT INTO "table" VALUES(5,'mykuma','Daejeon');
sqlite> 

실제로 실행된 INSERT 문을 저장하여 표시하는 것은 아니다. 표시된 INSERT 문은 테이블명이 table으로 되어 있다.

quote 모드

quote 모드는 조회한 데이터를 SQL 리터럴 형식으로 변환하여 표시한다. 문자열은 따옴표(’)으로 둘러싸여 표시되고, NULL은 “NULL"로 표시된다. 구분 기호로 쉼표(,)가 사용된다.

.mode quote

SELECT 문으로 테이블에서 데이터를 조회하여 보면 다음과 같이 표시된다.

sqlite> .mode quote
sqlite> 
sqlite> select * from user;
1,'devkuma','Seoul'
2,'kimkc','Busan'
3,'araikuma','Seoul'
4,'happykuma','Seoul'
5,'mykuma','Daejeon'
sqlite> 

.mode 명령을 사용하여 출력 결과의 표시 형식을 변경하는 방법에 대해 설명하였다. 외부 파일에 출력하고 싶은 경우나 출력 결과를 Web 테이블로 출력하고 싶은 경우 등과 같이 목적에 맞는 출력 형식을 선택하면 된다.