Ce face .dump
.dump transformă conținutul bazei într-un script SQL: instrucțiunile CREATE pentru structură și câte un INSERT pentru fiecare rând, într-o tranzacție. Rulând scriptul într-o bază goală obții o copie identică.
Cu un argument (tipar LIKE), primești doar tabelele potrivite. --data-only păstrează doar instrucțiunile INSERT, util când structura există deja. Rezultatul este text, deci îl poți compara cu diff sau păstra în Git.
Din terminal, backup-ul complet se face într-o singură linie: sqlite3 magazin.db .dump > backup.sql, iar restaurarea cu sqlite3 nou.db < backup.sql. Pentru o copie binară exactă a unei baze mari, .backup și VACUUM INTO sunt mai rapide.
Parametri
| Parametru | Descriere |
|---|---|
TABEL |
Opțional. Tabelele de exportat, ca tipar LIKE. |
--data-only |
Doar INSERT-urile, fără CREATE. |
--preserve-rowids |
Păstrează valorile rowid și pentru tabelele fără INTEGER PRIMARY KEY. |
Ce returnează
Un script SQL, ca text.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE produse (id INTEGER PRIMARY KEY, nume TEXT NOT NULL, pret INTEGER);
INSERT INTO produse (nume, pret) VALUES ('Caiet', 12), ('Pix', 4);
Exemplul 1: Toată baza ca SQL
PRAGMA foreign_keys=OFF la început lasă tabelele să fie create în orice ordine, iar BEGIN TRANSACTION … COMMIT face restaurarea rapidă și completă.
.dump
Rezultat
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE produse (id INTEGER PRIMARY KEY, nume TEXT NOT NULL, pret INTEGER);
INSERT INTO produse VALUES(1,'Caiet',12);
INSERT INTO produse VALUES(2,'Pix',4);
COMMIT;
Exemplul 2: Doar datele
.dump --data-only produse
Rezultat
INSERT INTO produse VALUES(1,'Caiet',12);
INSERT INTO produse VALUES(2,'Pix',4);
Exemplul 3: Backup într-un fișier și restaurare în altă bază
.output trimite dump-ul în copie.sql. Apoi .open deschide o bază nouă, goală, iar .read rulează scriptul în ea.
.output copie.sql
.dump
.output stdout
.open nou.db
.read copie.sql
SELECT * FROM produse;
Rezultat
╭────┬───────┬──────╮
│ id │ nume │ pret │
╞════╪═══════╪══════╡
│ 1 │ Caiet │ 12 │
│ 2 │ Pix │ 4 │
╰────┴───────┴──────╯
Greșeli frecvente
- Copiezi fișierul
.dbîn timp ce aplicația scrie în el. Poți obține o copie coruptă sau incompletă; folosește.dump,.backupsauVACUUM INTO, care citesc baza într-o tranzacție. - Restaurezi dump-ul într-o bază care are deja tabelele.
CREATE TABLEdă eroare; folosește o bază goală sau--data-only. - Uiți
.output stdoutdupă.output fisier: tot ce urmează ajunge în fișier, nu pe ecran.
Comenzi înrudite
.read: Rulează instrucțiunile SQL (și comenzile cu punct) dintr-un fișier, ca și cum le-ai fi scris de la tastatură..open: Închide baza curentă și deschide (sau creează) alt fișier de bază de date, fără să ieși din sqlite3.VACUUM: Reconstruiește fișierul bazei de date: eliberează spațiul rămas după ștergeri și, cu INTO, face o copie compactă..mode și .headers: Alege cum afișează sqlite3 rezultatele: tabel cu chenar, CSV, JSON, Markdown, câte o coloană pe rând; .headers pornește antetul.