SQLite를 사용할 때, SQL문이 아닌 sqlite 프롬프트 쉘 내에서 사용하는 명령어들이 있다. CLT(Command Line Tool) 또는 CLI(Command Line Interface)라고 불린다. 출력 포맷을 변경하거나, 데이터베이스의 테이블이 뭐가 있는지, 스키마는 어떻게 되어 있는지 등을 확인하는 용도이다. 심지어 export도 지원하는등 생각보다 기능이 많은데, 간단하게 몇가지만 알아보자.
.help
기본적으로 ‘.’, dot으로 시작해야 한다. 이 점이 커맨드라인 명령어를 구분짓는다. “.help”는 사용할 수 있는 모든 명령어를 보여준다.
sqlite> .help
.archive ... Manage SQL archives
.auth ON|OFF Show authorizer callbacks
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.cd DIRECTORY Change the working directory to DIRECTORY
....quit
sqlite> 커맨드 프롬프트를 종료하는 명령어이다.
.open <db>
sqlite 커맨드 프롬프트를 실행할 때는 보통 db 파일을 인자로 주고 시작한다.
~/o/sqlite sqlite3 longlist.db 1 ✘ │ 18m 13s │ 12:59:04
SQLite version 3.45.1 2024-01-30 16:01:20
Enter ".help" for usage hints.
sqlite> 하지만, 파일을 지정하지 않고 커맨드 프롬프트를 실행한 경우, 커맨드 프롬프트 상에서 파일을 open 할 수 있다.
~/o/sqlite sqlite3 ✔ │ 1m 25s │ 13:00:35
SQLite version 3.45.1 2024-01-30 16:01:20
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open longlist.db
sqlite> open 이 있으면 close도 있을거 같지만, 별도로 close는 존재하지 않는다. 새로운 db파일을 open하면 기존꺼가 닫히고, 또는 그냥 sqlite 프롬프트를 종료하면 그만이다.
.databases
현재 open된 database가 뭔지 확인하는 명령어이다.
sqlite> .databases
main: /home/batmask/Linux-500G/output/sqlite/longlist.db r/w
sqlite> .tables
데이터 베이스의 테이블들을 확인하는 명령어이다.
sqlite> .tables
longlist.schema <table>
특정 테이블의 스키마를 확인하는 명령어이다.
sqlite> .schema longlist
CREATE TABLE IF NOT EXISTS "longlist" (
"isbn" TEXT,
"title" TEXT,
"author" TEXT,
"translator" TEXT,
"format" TEXT,
"pages" INTEGER,
"publisher" TEXT,
"published" TEXT,
"year" INTEGER,
"votes" INTEGER,
"rating" REAL
);
sqlite> table을 생성한 SQL 자체를 확인할 수 있다.
출력 결과 다듬기 : .headers on, .mode column
기본적으로 SELECT로 가져오는 결과물은 헤더도 없고 그냥 ‘|’ 구분자로만 구분되어 출력된다.
sqlite> SELECT * FROM longlist LIMIT 5;
9788439736967|Boulder|Eva Baltasar|Nicole d'Amonville Alegría|paperback|112|Literatura Random House|2022-08-02|2023|2779|3.77
9781628971538|Whale|Cheon Myeong-Kwan|Jae Won Chung|paperback|368|Europa Editions|2023-01-19|2023|175|3.97
9781642861181|The Gospel According to the New World|Maryse Condé|Richard Philcox|paperback|184|World Editions|2023-03-07|2023|114|3.05
9781529414431|Standing Heavy|Gauz|Frank Wynne|paperback|252|MacLehose Press|2022-05-26|2023|322|3.57
9781474623025|Time Shelter|Georgi Gospodinov|Angela Rodel|hardcover|304|W&N|2022-04-21|2023|3142|4.05여기에 헤더를 출력하고 컬럼 구분을 하도록 하면 다음과 같이 바뀔 수 있다.
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT isbn,title,author FROM longlist LIMIT 5;
isbn title author
------------- ------------------------------------- -----------------
9788439736967 Boulder Eva Baltasar
9781628971538 Whale Cheon Myeong-Kwan
9781642861181 The Gospel According to the New World Maryse Condé
9781529414431 Standing Heavy Gauz
9781474623025 Time Shelter Georgi Gospodinov
sqlite> 주의할 점은 항목이 많다면, 출력포맷을 지정해도 엉켜보일 수 있다. 위의 경우는 깔끔하게 3개 컬럼만 참조해봤다.
출력결과 다듬기 : .mode box
한방에 박스형태로 보기좋게 포맷팅해주는 옵션이 있다. 바로 .mode box. .mode에는 더 많은 옵션이 있으니 찾아보면 좋겠다. 텍스트 포맷이 제대로 보여지지가 않아서 이미지로 가져왔다.

이정도만 해도 도움이 되겠지만 이 외에도 많은 명령어가 있으니, 한 번 찾아보는 것도 좋을것이다.