sqlite3 — Die SQLite-Kommandozeile
Praxis-Guide zu sqlite3 — der serverlosen, dateibasierten SQL-Datenbank: Dot-Commands, Import/Export, Backup und JSON von der Kommandozeile.
sqlite3 ist die offizielle Kommandozeile für SQLite – eine serverlose, dateibasierte SQL-Datenbank, die eine ganze Datenbank in einer einzigen Datei ablegt. Du brauchst keinen Server, keine Konfiguration und keinen laufenden Dienst: Du öffnest einfach eine .db-Datei und legst los. Neben normalem SQL bietet das Tool sogenannte Dot-Commands wie .tables, .schema oder .mode, mit denen du die Datenbank inspizierst, das Ausgabeformat steuerst und Daten importierst oder exportierst. Dieser Guide zeigt dir die wichtigsten Befehle für Entwicklung, Tests und eingebettete Anwendungen.
Öffnen & Anlegen
sqlite3 <database> — Öffnet eine Datenbank (legt sie an, falls sie nicht existiert).
sqlite3 myapp.dbsqlite3 :memory: — Legt eine reine In-Memory-Datenbank an.
sqlite3 :memory:sqlite3 <database> '<query>' — Führt eine Abfrage aus und beendet sich.
sqlite3 myapp.db 'SELECT count(*) FROM users;'sqlite3 <database> < <file> — Führt SQL aus einer Datei aus.
sqlite3 myapp.db < schema.sqlDot-Commands — Information
.databases — Listet die angehängten Datenbanken und ihre Dateipfade auf.
.databases.tables — Listet alle Tabellen der aktuellen Datenbank auf.
.tables.tables <pattern> — Listet Tabellen auf, die zu einem Muster passen.
.tables user%.schema <table> — Zeigt das CREATE-Statement einer Tabelle an.
.schema users.schema — Zeigt die CREATE-Statements aller Tabellen an.
.schema.indexes <table> — Zeigt die Indizes einer Tabelle an.
.indexes usersDot-Commands — Ausgabe
.mode <mode> — Setzt das Ausgabeformat (column, csv, json, table, line usw.).
.mode table.headers on — Blendet die Spaltenüberschriften in der Ausgabe ein.
.headers on.output <file> — Leitet die Abfrage-Ausgabe in eine Datei um.
.output results.txt.output — Setzt die Ausgabe wieder auf stdout zurück.
.output.once <file> — Leitet nur die nächste Abfrage-Ausgabe in eine Datei um (einmalig).
.once export.csvImport & Export
Importiert CSV-Daten in eine Tabelle.
.mode csv
.import <file> <table>Exportiert eine Tabelle als CSV.
.mode csv
.headers on
.output <file>
SELECT * FROM <table>;.dump — Exportiert die gesamte Datenbank als SQL-Statements.
.output backup.sql
.dump.dump <table> — Exportiert eine bestimmte Tabelle als SQL.
.dump users.read <file> — Führt SQL-Befehle aus einer Datei aus.
.read migrations/001.sqlBackup & Werkzeuge
.backup <file> — Erstellt ein konsistentes Backup der Datenbank.
.backup /tmp/myapp-backup.db.clone <file> — Klont die aktuelle Datenbank in eine neue Datei.
.clone myapp-copy.dbVACUUM; — Komprimiert die Datenbankdatei (gibt freien Speicher zurück).
VACUUM;PRAGMA integrity_check; — Prüft die Integrität der Datenbank.
PRAGMA integrity_check;PRAGMA table_info(<table>); — Zeigt die Spaltendetails einer Tabelle an.
PRAGMA table_info(users);.quit — Beendet sqlite3.
.quitTypische Muster
sqlite3 <db> -header -csv '<query>' — CSV-Export als Einzeiler.
sqlite3 myapp.db -header -csv 'SELECT * FROM users' > users.csvsqlite3 <db> -json '<query>' — JSON-Export als Einzeiler.
sqlite3 myapp.db -json 'SELECT * FROM users'sqlite3 <db> '.dump' | sqlite3 <newdb> — Datenbank per Dump und Restore klonen.
sqlite3 prod.db '.dump' | sqlite3 dev.dbsqlite3 <db> 'SELECT count(*) FROM <table>;' — Schnelle Zeilenanzahl von der Kommandozeile.
sqlite3 myapp.db 'SELECT count(*) FROM users;' Fazit
sqlite3 packt eine vollständige SQL-Datenbank in eine einzige Datei und die Kommandozeile gleich dazu – ideal für Entwicklung, Tests, kleine Tools und eingebettete Anwendungen. Die Dot-Commands nehmen dir die Routinearbeit ab: Mit .schema und .tables verschaffst du dir Überblick, mit .mode und .output steuerst du Export-Formate, und mit .dump oder .backup sicherst du den kompletten Bestand. Sei vorsichtig bei schreibenden Befehlen: Ein DROP oder ein DELETE ohne WHERE ist sofort und unwiderruflich. Für konsistente Sicherungen nimm .backup statt eine geöffnete Datei zu kopieren, und achte auf die Dateirechte der .db-Datei – wer sie lesen kann, liest deine gesamten Daten.
Weiterführende Links
- Command Line Shell For SQLite – offizielle Dokumentation der sqlite3-Kommandozeile (englisch)
- SQLite – Startseite – Projektseite mit Doku, Downloads und Format-Spezifikation (englisch)