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 테이블로 출력하고 싶은 경우 등과 같이 목적에 맞는 출력 형식을 선택하면 된다.