Ce face .mode și .headers
.mode schimbă formatul în care utilitarul sqlite3 afișează rezultatul fiecărui SELECT. Datele din bază nu se schimbă, doar felul în care le vezi. Fără argument, .mode spune care este modul curent.
Moduri folosite des: box și table (tabel cu chenar, bune pentru citit), list (valori separate de |, modul implicit), csv și tabs (pentru export), json (o listă de obiecte), markdown (tabel de lipit în documentație), line (câte o coloană pe rând, util pentru rânduri lungi) și insert (instrucțiuni INSERT). Lista completă: .mode --list.
.headers on afișează numele coloanelor deasupra datelor. În versiunile recente, schimbarea modului poate reseta antetul, așa că scrie .headers on după .mode sau folosește opțiunea --title on. Exemplele de pe acest site au rulat cu -box -header, adică în modul box cu antet.
Parametri
| Parametru | Descriere |
|---|---|
MOD |
box, table, list, csv, tabs, json, markdown, line, insert, html, quote și altele. |
--null TEXT |
Textul afișat în locul valorilor NULL (implicit nimic). |
--title on|off |
Afișează sau ascunde antetul, ca .headers. |
--once |
Setările de după această opțiune se aplică doar următoarei comenzi. |
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (id INTEGER PRIMARY KEY, nume TEXT NOT NULL, oras TEXT);
INSERT INTO clienti (nume, oras) VALUES ('Ana', 'Iași'), ('Mihai', NULL);
Exemplul 1: list și csv, cu antet
În modul list, NULL apare ca nimic între separatori. În csv și tabs, unele texte (aici cel cu diacritice) sunt puse între ghilimele; programele care citesc CSV le înțeleg corect.
.mode list
.headers on
SELECT * FROM clienti;
.mode csv
.headers on
SELECT * FROM clienti;
Rezultat
id|nume|oras
1|Ana|Iași
2|Mihai|
id,nume,oras
1,Ana,"Iași"
2,Mihai,
Exemplul 2: JSON și Markdown
.mode json
SELECT * FROM clienti;
.mode markdown
SELECT * FROM clienti;
Rezultat
[{"id":1,"nume":"Ana","oras":"Iași"},
{"id":2,"nume":"Mihai","oras":null}]
| id | nume | oras |
|----|-------|------|
| 1 | Ana | Iași |
| 2 | Mihai | |
Exemplul 3: NULL vizibil și un mod doar pentru o comandă
--null face vizibile valorile lipsă. .mode --once line afișează următorul rezultat câte o coloană pe rând, apoi revine singur la modul anterior (box).
.mode box --null NULL
SELECT * FROM clienti;
.mode --once line
SELECT * FROM clienti WHERE id = 1;
SELECT count(*) AS total FROM clienti;
Rezultat
╭────┬───────┬──────╮
│ id │ nume │ oras │
╞════╪═══════╪══════╡
│ 1 │ Ana │ Iași │
│ 2 │ Mihai │ NULL │
╰────┴───────┴──────╯
id: 1
nume: Ana
oras: Iași
╭───────╮
│ total │
╞═══════╡
│ 2 │
╰───────╯
Greșeli frecvente
- Crezi că
.modeschimbă datele. Este doar afișarea: un număr salvat ca text rămâne text, indiferent de mod. - Exporți cu
.mode listși deschizi rezultatul în Excel. Separatorul|și lipsa ghilimelelor strică textele care conțin separatorul; pentru export folosește.mode csvîmpreună cu.once fisier.csv. - Pierzi antetul după ce schimbi modul. Pune
.headers ondupă.mode.
Comenzi înrudite
.import: Încarcă un fișier CSV într-un tabel: îl creează din antetul fișierului sau adaugă rândurile într-un tabel existent..dump: Scrie toată baza de date (sau doar unele tabele) ca instrucțiuni SQL, bune pentru backup, transfer sau control al versiunilor..tables: Afișează numele tabelelor și vederilor din baza de date deschisă, eventual doar pe cele care se potrivesc cu un tipar LIKE.json_group_array / json_group_object: Funcții de agregare care adună valorile dintr-un grup de rânduri într-un tablou sau obiect JSON, gata de trimis unui API.