tutorial - sqlite3 example database




Come elencare le tabelle in un file di database SQLite aperto con ATTACH? (12)

.da per vedere tutti i database - uno chiamato ' principale '

le tabelle di questo database possono essere viste da

SELEZIONA distinto tbl_name dall'ordine sqlite_master di 1;

I database allegati hanno bisogno dei prefissi che hai scelto con AS nella dichiarazione ATTACH ad esempio aa (, bb, cc ...) quindi:

SELEZIONA distinto tbl_name dall'ordine aa.sqlite_master di 1;

Si noti che qui si ottengono anche le viste. Per escludere questi aggiungi dove type = 'table' prima di 'order'

Quale SQL può essere usato per elencare le tabelle e le righe all'interno di quelle tabelle in un file di database SQLite - una volta che l'ho collegato con il comando ATTACH sullo strumento da riga di comando di SQLite 3?


A partire dalle ultime versioni di SQLite 3 puoi rilasciare:

.fullschema

per vedere tutte le tue dichiarazioni create.


Ci sono alcuni passaggi per vedere le tabelle in un database SQLite:

  1. Elenca le tabelle nel tuo database:

    .tables
    
  2. Elenca come appare la tabella:

    .schema tablename
    
  3. Stampa l'intera tabella:

    SELECT * FROM tablename;
    
  4. Elenca tutti i comandi di richiesta SQLite disponibili:

    .help
    

Dal momento che nessuno ha menzionato il riferimento ufficiale di SQLite, penso che potrebbe essere utile fare riferimento ad esso sotto questo titolo:

https://www.sqlite.org/cli.html

Puoi manipolare il tuo database usando i comandi descritti in questo link. Inoltre, se stai usando il SO Windows e non sai dove si trova la shell dei comandi, questo è nel sito di SQLite:

https://www.sqlite.org/download.html

Dopo averlo scaricato, fai clic sul file sqlite3.exe per inizializzare la shell dei comandi di SQLite . Quando viene inizializzato, per impostazione predefinita questa sessione SQLite utilizza un database in memoria, non un file su disco, quindi tutte le modifiche andranno perse all'uscita dalla sessione. Per utilizzare un file disco persistente come database, immettere il comando ".open ex1.db" immediatamente dopo l'avvio della finestra del terminale.

L'esempio precedente provoca l'apertura e l'utilizzo del file di database denominato "ex1.db" e creato se non esiste in precedenza. Potresti voler utilizzare un percorso completo per assicurarti che il file si trovi nella directory in cui pensi che sia. Usa le barre di avanzamento come carattere separatore di directory. In altre parole, usa "c: /work/ex1.db", non "c: \ work \ ex1.db".

Per vedere tutte le tabelle nel database che hai scelto in precedenza, digita il comando .tables come si dice nel link sopra.

Se lavori in Windows, penso che potrebbe essere utile spostare questo file sqlite.exe nella stessa cartella con gli altri file Python. In questo modo, il file Python scrive e le letture della shell SQLite dai file .db si trovano nello stesso percorso.


Il modo più semplice per farlo è aprire direttamente il database e utilizzare il comando .dump , anziché collegarlo dopo aver richiamato lo strumento shell SQLite 3.

Quindi ... (supponiamo che il prompt della riga di comando del sistema operativo sia $) anziché $sqlite3 :

sqlite3> ATTACH database.sqlite as "attached"

Dalla riga di comando del SO, apri direttamente il database:

$sqlite3 database.sqlite
sqlite3> .dump

Io uso questa query per ottenerlo:

SELECT name FROM sqlite_master WHERE type='table'

E da usare in iOS:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];

Per elencare le tabelle puoi anche fare:

SELECT name FROM sqlite_master
WHERE type='table';

Per mostrare tutte le tabelle, utilizzare

SELECT name FROM sqlite_master WHERE type = "table"

Per mostrare tutte le righe, suppongo che tu possa scorrere tutte le tabelle e fare semplicemente un SELECT * su ciascuna di esse. Ma forse un DUMP è quello che cerchi?


Secondo la documentation , l'equivalente di SHOW TABLES; di MySQL SHOW TABLES; è:

Il comando ".tables" è simile alla modalità elenco delle impostazioni, quindi esegue la seguente query:

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;

Tuttavia, se stai verificando se esiste una sola tabella (o per ottenere i suoi dettagli), vedi la risposta @LuizGeron .


Sembra che tu debba passare attraverso la tabella sqlite_master , in questo modo:

SELECT * FROM dbname.sqlite_master WHERE type='table';

E poi scorrere manualmente ciascuna tabella con una SELECT o simile per guardare le righe.

I comandi .DUMP e .SCHEMA non sembrano affatto vedere il database.


Uso:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"

Utilizzare. .help per controllare i comandi disponibili.

.table

Questo comando mostrerebbe tutte le tabelle sotto il tuo attuale database.







metadata