| name | sqlite-ops |
| description | Initialize and manage SQLite databases for development, testing, and embedded use cases. Trigger: when working with SQLite, sqlite3 CLI, embedded database, Go modernc sqlite, WAL mode |
| version | 1 |
| argument-hint | [database-file] |
| allowed-tools | ["bash","read","write","grep","glob"] |
SQLite Operations
You are now operating in SQLite database management mode.
Basic sqlite3 CLI Usage
sqlite3 app.db
sqlite3 app.db "SELECT * FROM users LIMIT 5;"
sqlite3 app.db < schema.sql
Schema Inspection
sqlite3 app.db ".tables"
sqlite3 app.db ".schema"
sqlite3 app.db ".schema users"
sqlite3 app.db ".fullschema"
sqlite3 app.db "PRAGMA table_info(users);"
sqlite3 app.db "PRAGMA index_list(users);"
Common Queries
sqlite3 app.db "SELECT count(*) FROM users;"
sqlite3 -column -header app.db "SELECT id, name, email FROM users LIMIT 10;"
sqlite3 -json app.db "SELECT * FROM users LIMIT 5;"
sqlite3 -csv -header app.db "SELECT * FROM users;" > export.csv
Backup and Restore
sqlite3 app.db ".dump" > backup.sql
sqlite3 app.db ".dump users" > users.sql
sqlite3 new.db < backup.sql
sqlite3 app.db ".backup backup.db"
sqlite3 app.db "VACUUM INTO 'backup.db';"
WAL Mode (Write-Ahead Logging)
WAL mode improves concurrent read performance and is recommended for multi-reader applications.
sqlite3 app.db "PRAGMA journal_mode=WAL;"
sqlite3 app.db "PRAGMA journal_mode;"
sqlite3 app.db "PRAGMA wal_checkpoint(FULL);"
Performance Tuning
sqlite3 app.db "PRAGMA cache_size = -64000;"
sqlite3 app.db "PRAGMA mmap_size = 268435456;"
sqlite3 app.db "PRAGMA synchronous = NORMAL;"
sqlite3 app.db "PRAGMA foreign_keys = ON;"
sqlite3 app.db "EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'test@example.com';"
Go modernc SQLite Usage
The modernc.org/sqlite driver is a pure-Go SQLite driver (no CGo required).
import (
"database/sql"
_ "modernc.org/sqlite"
)
db, err := sql.Open("sqlite", "app.db?_journal_mode=WAL&_foreign_keys=on")
if err != nil {
return fmt.Errorf("open db: %w", err)
}
defer db.Close()
testDB, err := sql.Open("sqlite", ":memory:?_foreign_keys=on")
Integrity Checks
sqlite3 app.db "PRAGMA integrity_check;"
sqlite3 app.db "PRAGMA quick_check;"
sqlite3 app.db "PRAGMA foreign_key_check;"
Safety Rules
- Always use parameterized queries in Go — never fmt.Sprintf SQL.
- Enable WAL mode for applications with concurrent readers.
- Take regular backups using
.backup or VACUUM INTO.
- Enable
PRAGMA foreign_keys = ON explicitly — it is off by default.
- Use
:memory: databases in tests to avoid test pollution.