Ce face .open
Pornit fără argumente, sqlite3 lucrează pe o bază temporară, în memorie, care dispare la ieșire. .open magazin.db deschide fișierul magazin.db; dacă nu există, este creat. De acum, tot ce scrii se salvează pe disc.
Același efect îl are pornirea cu numele fișierului: sqlite3 magazin.db. Cu .open schimbi baza fără să închizi utilitarul. .open :memory: revine la o bază goală în memorie.
Opțiuni utile: --readonly deschide fișierul doar pentru citire (orice scriere dă eroare), --new golește fișierul și pornește cu o bază nouă, iar --ifexists refuză să creeze un fișier care nu există.
Parametri
| Parametru | Descriere |
|---|---|
FISIER |
Calea fișierului; :memory: pentru o bază în memorie. |
--readonly |
Deschide doar pentru citire. |
--new |
Șterge conținutul fișierului și începe cu o bază goală. |
--ifexists |
Deschide doar dacă fișierul există deja. |
Exemple
Exemplul 1: Datele rămân în fișier
Datele scrise în magazin.db sunt încă acolo după ce trecem pe o bază în memorie (goală, deci .tables nu afișează nimic) și redeschidem fișierul.
.open magazin.db
CREATE TABLE produse (id INTEGER PRIMARY KEY, nume TEXT, pret INTEGER);
INSERT INTO produse (nume, pret) VALUES ('Caiet', 12), ('Pix', 4);
.open :memory:
.tables
.open magazin.db
SELECT * FROM produse;
Rezultat
╭────┬───────┬──────╮
│ id │ nume │ pret │
╞════╪═══════╪══════╡
│ 1 │ Caiet │ 12 │
│ 2 │ Pix │ 4 │
╰────┴───────┴──────╯
Exemplul 2: Doar pentru citire
Cu --readonly, citirea merge, dar INSERT este refuzat. Mesajul de mai jos este cel afișat de sqlite3 când rulează scriptul dintr-un fișier.
.open magazin.db
CREATE TABLE produse (id INTEGER PRIMARY KEY, nume TEXT, pret INTEGER);
INSERT INTO produse (nume, pret) VALUES ('Caiet', 12);
.open --readonly magazin.db
SELECT count(*) AS produse FROM produse;
INSERT INTO produse (nume, pret) VALUES ('Rigla', 5);
Rezultat (eroare)
╭─────────╮
│ produse │
╞═════════╡
│ 1 │
╰─────────╯
Error near line 7: attempt to write a readonly database
Greșeli frecvente
- Lucrezi zeci de minute în
sqlite3pornit fără fișier și pierzi totul la ieșire. Verifică cu.databasesce fișier este deschis; dacă e gol, ești în memorie. Poți salva baza cu.save fisier.db. - Greșești o literă în numele fișierului.
.opencreează fără întrebări un fișier nou, gol; folosește--ifexistscând vrei doar să deschizi. - Folosești
.open --newpe o bază bună. Opțiunea șterge conținutul existent.
Comenzi înrudite
.tables: Afișează numele tabelelor și vederilor din baza de date deschisă, eventual doar pe cele care se potrivesc cu un tipar LIKE..dump: Scrie toată baza de date (sau doar unele tabele) ca instrucțiuni SQL, bune pentru backup, transfer sau control al versiunilor..read: Rulează instrucțiunile SQL (și comenzile cu punct) dintr-un fișier, ca și cum le-ai fi scris de la tastatură.ATTACH DATABASE: Deschide încă o bază de date în aceeași conexiune, ca să interoghezi sau să copiezi date între fișiere cu SQL obișnuit.PRAGMA journal_mode (WAL): Alege cum protejează SQLite datele la scriere. Modul WAL permite citiri în timp ce altcineva scrie și este alegerea uzuală pentru aplicații.