open - sqlite graphical tool




Como listar as tabelas em um arquivo de banco de dados SQLite que foi aberto com o ATTACH? (12)

.da para ver todos os bancos de dados - um chamado ' principal '

tabelas deste banco de dados pode ser visto por

SELECT nome_tabela distinta da ordem sqlite_master por 1;

Os bancos de dados anexados precisam de prefixos que você escolheu com AS na instrução ATTACH, por exemplo, aa (, bb, cc ...) assim:

SELECT nome_tabela distinta da ordem aa.sqlite_master por 1;

Observe que aqui você obtém as visualizações também. Para excluir estes, adicione onde type = 'table' antes de 'order'

Qual SQL pode ser usado para listar as tabelas e as linhas dentro dessas tabelas em um arquivo de banco de dados SQLite - depois de anexá-lo com o comando ATTACH na ferramenta de linha de comando SQLite 3?


A maneira mais fácil de fazer isso é abrir o banco de dados diretamente e usar o comando .dump , em vez de anexá-lo após chamar a ferramenta shell do SQLite 3.

Então ... (suponha que seu prompt de linha de comando do sistema operacional seja $) em vez de $sqlite3 :

sqlite3> ATTACH database.sqlite as "attached"

Na linha de comandos do SO, abra o banco de dados diretamente:

$sqlite3 database.sqlite
sqlite3> .dump

As .tables e .schema "helper" não examinam os bancos de dados ATTACH: eles consultam a tabela SQLITE_MASTER para o banco de dados "principal". Conseqüentemente, se você usou

ATTACH some_file.db AS my_db;

então você precisa fazer

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

Note que tabelas temporárias não aparecem com .tables : você tem que listar sqlite_temp_master para isso:

SELECT name FROM sqlite_temp_master WHERE type='table';

Através de uma union all , combine todas as tabelas em uma lista.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'

De acordo com a documentation , o equivalente do MySQLs ' SHOW TABLES; é:

O comando ".tables" é semelhante ao modo de lista de configurações e executa a seguinte consulta:

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;

No entanto, se você estiver verificando se existe uma única tabela (ou para obter seus detalhes), consulte a resposta @LuizGeron .


Eu uso essa consulta para obtê-lo:

SELECT name FROM sqlite_master WHERE type='table'

E para usar no iOS:

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

Existem algumas etapas para ver as tabelas em um banco de dados SQLite:

  1. Listar as tabelas em seu banco de dados:

    .tables
  2. Listar como a tabela se parece:

    .schema tablename
  3. Imprima a tabela inteira:

    SELECT * FROM tablename;
  4. Listar todos os comandos de prompt do SQLite disponíveis:

    .help

O comando ".schema" listará as tabelas disponíveis e suas linhas, mostrando a instrução usada para criar as tabelas:

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

Para mostrar todas as tabelas, use

SELECT name FROM sqlite_master WHERE type = "table"

Para mostrar todas as linhas, acho que você pode percorrer todas as tabelas e fazer um SELECT * em cada uma delas. Mas talvez um DUMP seja o que você procura?


Parece que você precisa passar pela tabela sqlite_master , assim:

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

E, em seguida, percorrer manualmente cada tabela com um SELECT ou similar para ver as linhas.

Os comandos .SCHEMA e .SCHEMA não parecem ver o banco de dados.


Usar:

import sqlite3

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

Use .help para verificar os comandos disponíveis.

.table

Este comando mostraria todas as tabelas sob seu banco de dados atual.





metadata