Ce face .read
.read deschide un fișier text și execută tot ce găsește în el, rând cu rând: SQL obișnuit și comenzi cu punct. Este felul obișnuit de a aplica o schemă, o migrare sau un fișier de date de test fără să le copiezi în terminal.
Dacă argumentul începe cu |, sqlite3 rulează restul ca o comandă de sistem și execută ce scrie aceasta. Așa poți genera SQL cu un script.
Calea fișierului este relativă la directorul din care ai pornit sqlite3. Un fișier citit cu .read poate conține la rândul lui alte .read.
Parametri
| Parametru | Descriere |
|---|---|
FISIER |
Fișierul cu instrucțiuni. Dacă începe cu |, este o comandă a cărei ieșire se rulează. |
Exemple
Exemplul 1: Schema și datele dintr-un fișier
Fișierul produse.sql este scris în exemplu cu .output și .print. Textul de după .print e pus între ghilimele, ca punctul și virgulă de la final să rămână în fișier.
.output produse.sql
.print "CREATE TABLE produse (id INTEGER PRIMARY KEY, nume TEXT, pret INTEGER);"
.print "INSERT INTO produse (nume, pret) VALUES ('Caiet', 12), ('Pix', 4);"
.output stdout
.read produse.sql
SELECT nume, pret FROM produse ORDER BY pret;
Rezultat
╭───────┬──────╮
│ nume │ pret │
╞═══════╪══════╡
│ Pix │ 4 │
│ Caiet │ 12 │
╰───────┴──────╯
Exemplul 2: SQL generat de o comandă
Comanda echo scrie un SELECT, iar .read îl execută.
.read '|echo "SELECT 2 + 2 AS rezultat;"'
Rezultat
╭──────────╮
│ rezultat │
╞══════════╡
│ 4 │
╰──────────╯
Greșeli frecvente
- Te aștepți ca
.readsă se oprească la prima eroare. În modul interactiv,sqlite3afișează eroarea și continuă; pornește-l cu-bailsau scrie.bail onca să se oprească. - Rulezi același fișier de schemă de două ori. A doua oară
CREATE TABLEdă eroare; scrieCREATE TABLE IF NOT EXISTSîn scripturile care pot rula de mai multe ori. - Folosești
.readdintr-un program. Este o comandă a utilitarului; în Python rulezi un fișier cuconexiune.executescript(text).
Comenzi înrudite
.dump: Scrie toată baza de date (sau doar unele tabele) ca instrucțiuni SQL, bune pentru backup, transfer sau control al versiunilor..import: Încarcă un fișier CSV într-un tabel: îl creează din antetul fișierului sau adaugă rândurile într-un tabel existent..open: Închide baza curentă și deschide (sau creează) alt fișier de bază de date, fără să ieși din sqlite3.SQLite din Python (sqlite3): Modulul sqlite3 din biblioteca standard Python: conectare, interogări cu parametri, tranzacții și rânduri ca dicționare.