Ce SQL poate fi folosit pentru a lista de tabele, și rânduri în cadrul acestor tabele într-o bază de date SQLite de fișiere - după ce am atasat-o cu "ATAȘAȚI" de comandă pe SQLite 3 command line tool?
Există câțiva pași pentru a vedea tabele într-o bază de date SQLite:
.mese
.schema tablename 3. Imprima întregul tabel:
SELECT * FROM nume tabelă; 4. Lista toate disponibile SQLite prompt de comenzi:
.ajuta
A .tabele", și".schema
"ajutor" funcții don't se uite în Anexează baze de date: au interoga `SQLITE_MASTER masa pentru "principal" baza de date. Prin urmare, dacă ai folosit
ATTACH some_file.db AS my_db;
apoi, aveți nevoie pentru a face
SELECT name FROM my_db.sqlite_master WHERE type='table';
Rețineți că, tabele temporare don't apar cu .tabele
fie: trebuie să list `sqlite_temp_master pentru că:
SELECT name FROM sqlite_temp_master WHERE type='table';
Se pare că aveți nevoie pentru a merge prin sqlite_master tabel, astfel:
SELECT * FROM dbname.sqlite_master WHERE type='table';
Și apoi manual du-te prin fiecare masa cu o "SELECTARE" sau similare să se uite la rânduri.
A .GROAPA de gunoi "și".SCHEMA
comenzi nu't apar pentru a vedea baza de date de la toate.
Pentru a afișa toate tabelele, utilizare
SELECT name FROM sqlite_master WHERE type = "table"
Pentru a afișa toate rândurile, cred că puteți itera prin toate tabelele și doar a face un SELECT * pe fiecare dintre ele. Dar poate o GROAPA de gunoi este ceea ce ai're după?
Există o comanda este disponibilă pentru acest lucru pe SQLite linie de comandă:
.tables ?PATTERN? List names of tables matching a LIKE pattern
Care convertește la următoarele SQL:
SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1
Eu folosesc această interogare pentru a se obține:
SELECT name FROM sqlite_master WHERE type='table'
Și de a folosi în iOS:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
Conform documentația, echivalentul a MySQLs' SHOW TABLES;
este:
".mese" comandă este similar cu lista setare modul de executare următoarea interogare:
SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1;
Cu toate acestea, dacă sunteți de verificare dacă un singur tabel există (sau pentru a obține detalii), a se vedea @LuizGeron răspunsul.
Cel mai simplu mod de a face acest lucru este de a deschide baza de date în mod direct și de a folosi `.groapa de comandă, mai degrabă decât atașarea după invocarea SQLite 3 shell tool.
Deci... (presupun OS command prompt în linie de comandă este de $) în loc de $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
De la sistemul de OPERARE linie de comandă, deschide baza de date în mod direct:
$sqlite3 database.sqlite
sqlite3> .dump
Utilizare:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Din moment ce nimeni nu a menționat despre oficiale de referință de SQLite, cred că poate fi util să se refere la ea în această rubrică:
https://www.sqlite.org/cli.html
Puteți manipula bazei dumneavoastră de date utilizând comenzile descrise în acest link. În plus, dacă utilizați sistemul de OPERARE Windows și nu știi unde comanda shell este, care este în SQLite's site-ul:
https://www.sqlite.org/download.html
După descărcarea, faceți clic pe sqlite3.exe fișier pentru a inițializa SQLite comanda shell. Atunci când este inițializat, implicit, această SQLite sesiune este folosind un in-memory database, nu un fișier de pe disc, și astfel încât toate modificările vor fi pierdute atunci când sesiunea ieșirile. Pentru a utiliza un persistentă disc ca fișier de bază de date, introduceți ".deschide ex1.db" comandă imediat după fereastră terminal pornește.
Exemplul de mai sus determină baza de date fișier numit "ex1.db" a fi deschis și utilizat, și l-a creat, dacă nu a existat anterior. S-ar putea să doriți să utilizați un full pathname pentru a se asigura că fișierul este în directorul care crezi că este în. Utilizați înainte-slash ca director caracter separator. Cu alte cuvinte, utilizarea "c:/work/ex1.db", nu "c:\work\ex1.db".
Pentru a vedea toate tabelele din baza de date anterior ați ales, tastați comanda .tabele după cum se spune în linkul de mai sus.
Dacă lucrați în Windows, cred că ar fi util să se mute acest sqlite.exe fișierul în același director cu alte Python fișiere. În acest fel, fișier Python scrie și SQLite shell citește de la .db fișiere sunt în aceeași cale.
".schema" de comando va lista mesele disponibile și lor rânduri, prin care vă arată în declarație folosit pentru a crea spus tabele:
sqlite> creați table_a (id int, un int, int b); sqlite> .schema table_a CREAȚI TABELUL table_a (id int, un int, int b);
.da pentru a vedea toate bazele de date - unul numit '*principale***'
tabelele din această bază de date poate fi văzut de către
SELECTAȚI distincte tbl_name de sqlite_master order by 1;
Atașat baze de date trebuie prefixe ai ales cu fel CA în declarația ATAȘAȚI de exemplu, aa (, bb, cc,...), astfel încât:
SELECTAȚI distincte tbl_name de la aa.sqlite_master order by 1;
Rețineți că aici ai opinii la fel de bine. Pentru a exclude aceste adauga unde tip = 'masa' înainte de ' pentru'