Come visualizzare l'elenco delle tabelle in un file di database SQLite che è stato aperto con ALLEGARE?

StackOverflow https://stackoverflow.com/questions/82875

  •  01-07-2019
  •  | 
  •  

Domanda

Cosa SQL può essere utilizzato per visualizzare l'elenco delle tabelle, e le righe all'interno di tali tabelle in un file di database SQLite - una volta che ho collegato con il ATTACH comando SQLite 3 strumento a riga di comando?

È stato utile?

Soluzione

Il .tables, e .schema "helper" funzioni non guardare nel database Collegati:solo che la query SQLITE_MASTER tabella "principale" del database.Di conseguenza, se si è utilizzato

ATTACH some_file.db AS my_db;

allora avete bisogno di fare

SELECT name FROM my_db.sqlite_master WHERE type='table';

Nota che le tabelle temporanee non si presentano con .tables sia:devi elenco sqlite_temp_master per che:

SELECT name FROM sqlite_temp_master WHERE type='table';

Altri suggerimenti

Ci sono pochi passi per vedere le tabelle in un database SQLite:

  1. Elenco tabelle del database:

    .tables
    
  2. Elenco di come l'aspetto della tabella:

    .schema tablename
    
  3. Stampare l'intera tabella:

    SELECT * FROM tablename;
    
  4. Elenco di tutte le SQLite prompt dei comandi:

    .help
    

Sembra che avete bisogno di passare attraverso il cui sqlite_master tabella, come questo:

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

Manualmente e poi passare attraverso ogni tavolo con un SELECT o simile a guardare le righe.

Il .DUMP e .SCHEMA i comandi non apparire a tutti i database.

Per visualizzare tutte le tabelle, utilizzare

SELECT name FROM sqlite_master WHERE type = "table"

Per visualizzare tutte le righe, credo che si possono scorrere tutte le tabelle e basta fare una SELECT * su ciascuno di essi.Ma forse un DUMP è che cosa siete dopo?

Utilizzare .help per verificare la disponibilità di comandi.

.table

Questo comando mostra tutte le tabelle in database corrente.

C'è un comando disponibile per questo sul SQLite riga di comando:

.tables ?PATTERN?      List names of tables matching a LIKE pattern

Che converte in SQL riportato di seguito:

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

Per visualizzare l'elenco delle tabelle si può anche fare:

SELECT name FROM sqlite_master
WHERE type='table';

Provare PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema

Io uso questa query per ottenere:

SELECT name FROM sqlite_master WHERE type='table'

E per l'uso in iOS:

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

Secondo il documentazione, l'equivalente di MySQLs' SHOW TABLES; è:

L' ".tabelle" di comando è simile all'impostazione di modalità elenco, quindi l'esecuzione di 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 si sta la verifica se una singola tabella esiste (o, per ottenere i suoi dettagli), vedere @LuizGeron risposta.

Come le ultime versioni di SQLite 3 è possibile emettere:

.fullschema

per vedere tutte le istruzioni create.

Il modo più semplice per farlo è quello di aprire direttamente il database e utilizzare il .dump comando, piuttosto che attaccarlo dopo aver invocato la SQLite 3 strumento di shell.

Quindi...(si supponga che il sistema operativo prompt della riga di comando è di $) invece di $sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

Dal vostro sistema operativo a linea di comando, aprire direttamente il database:

$sqlite3 database.sqlite
sqlite3> .dump

Uso:

import sqlite3

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

Tramite un union all, unire tutte le tabelle in un unico elenco.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'

Visto che nessuno ha ricordato il riferimento ufficiale di SQLite, penso che potrebbe essere utile fare riferimento ad esso in questa voce:

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

È possibile modificare il database utilizzando i comandi descritti in questo link.Inoltre, se si utilizza il sistema operativo Windows e non si sa dove il comando di shell, che è in SQLite è un sito:

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

Dopo il download, fare clic su sqlite3.exe file di inizializzazione SQLite comando shell.Quando viene inizializzato, per impostazione predefinita, questo SQLite sessione utilizza un database in memoria, non un file su disco, e così tutte le modifiche andranno perse quando la sessione termina.Per l'utilizzo di un permanente su disco file di database, immettere l' ".aprire ex1.db" comando subito dopo la finestra del terminale si avvia.

L'esempio di cui sopra provoca il file di database di nome "ex1.db" per essere aperto e utilizzato, e creato, se non esisteva in precedenza.Si potrebbe desiderare di utilizzare un nome di percorso completo per garantire che il file è nella directory che si pensa che è in.Utilizzare avanti-taglia come il carattere separatore di directory.In altre parole l'uso "c:/work/ex1.db", non "c:\work\ex1.db".

Per vedere tutte le tabelle del database si è scelto in precedenza, digitare il comando .tavoli come è detto nel link qui sopra.

Se si lavora in Windows, penso che potrebbe essere utile spostare questo sqlite.exe file nella stessa cartella con gli altri file Python.In questo modo, il file Python scrive e SQLite shell di legge .db file nello stesso percorso.

L' ".schema di" commando vi elenco le tabelle e le loro righe, mostrando il comando usato per creare disse tabelle:

sqlite> create table_a (id int, a int, b int);
sqlite> .schema table_a
CREATE TABLE table_a (id int, a int, b int);

.da vedere tutti i database - una chiamata"principale'

le tabelle di questo database può essere visto da

SELECT distinct tbl_name da cui sqlite_master ordine di 1;

Il database collegati bisogno prefissi si è scelto, con la dichiarazione di ALLEGARE ad esempio aa (, bb, cc...) così:

SELECT distinct tbl_name da aa.cui sqlite_master ordine 1;

Nota che qui si ottiene il punto di vista così.Per escludere questi aggiungere where tipo = 'tabella' prima di 'ordine'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top