C.W.K.
Stream
Lesson 10 of 10 · published

인터랙티브 쉘 — Dot 명령 + REPL Workflow

~14 min · sqlite, cli, dot-commands, repl

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

쉘이 만능 칼이야

sqlite3 CLI 는 query runner 그 이상이야. 자기만의 meta-command 언어 — dot 명령 — 가진 풀 인터랙티브 쉘이야. 앞에 . 붙으면 SQLite 가 아니라 쉘이 해석해.

실제로 자주 쓸 12 개:

  • .help — 모든 dot 명령 한 줄 설명 list.
  • .tables — 현재 DB 의 테이블 list.
  • .schema [TABLE] — CREATE statement 출력; 옵션으로 테이블 필터.
  • .indexes [TABLE] — index list.
  • .databases — 붙은 DB 보여줌.
  • .mode column|box|csv|json|markdown|line — 결과 포맷 변경.
  • .headers on — 컬럼 이름 출력.
  • .timer on — 쿼리당 wall-clock 시간 출력.
  • .read FILE.sql — 파일에서 SQL 실행.
  • .import FILE TABLE — CSV/TSV 대량 로드.
  • .dump — DB 재현하는 SQL 스크립트 emit.
  • .backup TARGET.db — 안전한 online snapshot.
  • .quit — 쉘 종료 (Ctrl-D 도 됨).
Tip: 새 세션 처음 1 초 안에 .mode box + .headers on 쳐. 기본 list 모드는 컬럼 5 개 넘으면 못 읽고, box 모드는 예쁜 Unicode 테이블 + 긴 값도 잘 살려.

CLI 를 batch 모드 로 돌려서 SQL 을 파이프 입출력 할 수도 있어 — 스크립트 / cron / 일회성 탐색에 완벽.

Code

울지 않게 해주는 REPL workflow·bash
sqlite3 myapp.db <<'EOF'
.headers on
.mode box
.timer on
.tables
.schema users
SELECT count(*) AS n_users FROM users;
EOF

# 출력:
# users notes  conversations
# CREATE TABLE users(...)
# ┌──────────┐
# │ n_users  │
# ├──────────┤
# │ 42       │
# └──────────┘
# Run Time: real 0.001 user 0.000 sys 0.000
저장된 REPL 설정 — 쉘 열 때마다 적용·bash
# ~/.sqliterc
.headers on
.mode box
.timer on
.changes on
.nullvalue NULL

# 그 다음 CLI 열면 위 설정 자동 적용
sqlite3 myapp.db
SQL 파이프 입력, JSON 출력 — jq 와 궁합 최고·bash
sqlite3 myapp.db -json 'SELECT id, email FROM users LIMIT 3' | jq
# [
#   { "id": 1, "email": "alice@x.com" },
#   { "id": 2, "email": "bob@x.com" },
#   { "id": 3, "email": "carol@x.com" }
# ]

External links

Exercise

~/.sqliterc 에 dot 명령 최소 3 개 기본값으로 켜놔. 그 다음 본인의 실제 SQLite DB (피파 거, 브라우저 거, 본인 거) 하나 열어. .tables, .schema, .indexes 로 모르는 테이블 하나 매핑해. 그 앱이 데이터를 어떻게 모델링하는지 발견한 거 정리.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.