Jak wyświetlić listę tabel w pliku bazy danych SQLite, który został otwarty za pomocą załącz?

Jaki SQL może być używany do wyświetlania tabel i wierszy w tych tabelach w pliku bazy danych SQLite-po dołączeniu go za pomocą polecenia ATTACH w narzędziu wiersza poleceń SQLite 3?

Author: izb, 2008-09-17

17 answers

Funkcje .tables i .schema "helper" nie zaglądają do załączonych baz danych: po prostu odpytują tabelę SQLITE_MASTER dla "głównej" bazy danych. W związku z tym, jeśli użyto

ATTACH some_file.db AS my_db;

Następnie trzeba zrobić

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

Zauważ, że tabele tymczasowe nie pojawiają się również z .tables: musisz wymienić sqlite_temp_master w tym celu:

SELECT name FROM sqlite_temp_master WHERE type='table';
 476
Author: Anthony Williams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 13:30:00

Istnieje kilka kroków, aby zobaczyć tabele w bazie danych SQLite:

  1. Lista tabel w bazie danych:
    .tables
    
  2. Lista jak wygląda Tabela:

    .schema tablename
    
  3. Wydrukuj całą tabelę:

    SELECT * FROM tablename;
    
  4. Lista wszystkich dostępnych poleceń podpowiedzi SQLite:

    .help
    
 1199
Author: Mark Janssen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 15:05:05

Wygląda na to, że musisz przejść przez tabelę sqlite_master , Tak:

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

A następnie ręcznie przejść przez każdą tabelę z {[1] } lub podobne, aby spojrzeć na wiersze.

Polecenia .DUMP i .SCHEMA w ogóle nie widzą bazy danych.

 424
Author: Lasse Vågsæther Karlsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-12 08:52:42

Aby wyświetlić wszystkie tabele, użyj

SELECT name FROM sqlite_master WHERE type = "table"

Aby wyświetlić wszystkie wiersze, myślę, że można iterację przez wszystkie tabele i po prostu wybrać * na każdej z nich. Ale może szukasz nory?

 142
Author: Christian Davén,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 13:06:03

Użyj .help, aby sprawdzić dostępne polecenia.

.table

To polecenie wyświetli wszystkie tabele w bieżącej bazie danych.

 66
Author: Antony.H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-12 08:38:52

W wierszu poleceń SQLite dostępne jest polecenie:

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

Który konwertuje na następujący 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
 37
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-01 00:51:06

Aby wyświetlić listę tabel możesz również zrobić:

SELECT name FROM sqlite_master
WHERE type='table';
 34
Author: Rafał Dowgird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 09:19:23

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

 26
Author: Luiz Geron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 09:16:31

Zgodnie z dokumentacją , odpowiednikiem MySQLs ' SHOW TABLES; jest:

".tables " polecenie jest podobne do ustawiania trybu listy, a następnie wykonywania następujące zapytanie:

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;

Jeśli jednak sprawdzasz, czy istnieje pojedyncza tabela (lub aby uzyskać jej szczegóły), zobacz @ LuizGeron odpowiedz.

 14
Author: Alix Axel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:49

Od najnowszych wersji SQLite 3 możesz wydać:

.fullschema

Aby zobaczyć wszystkie Twoje Utwórz instrukcje.

 13
Author: pepper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 19:03:36

Używam tego zapytania, aby je uzyskać:

SELECT name FROM sqlite_master WHERE type='table'

I używać w iOS:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
 12
Author: GameLoading,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-01 00:53:22

Najprostszym sposobem na to jest bezpośrednie otwarcie bazy danych i użycie komendy .dump, zamiast dołączania jej po wywołaniu narzędzia powłoki SQLite 3.

Więc... (Załóżmy, że wiersz polecenia systemu operacyjnego to $) zamiast $sqlite3:
sqlite3> ATTACH database.sqlite as "attached"

Z linii poleceń systemu operacyjnego otwórz bazę danych bezpośrednio:

$sqlite3 database.sqlite
sqlite3> .dump
 10
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 19:02:15

Użycie:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
 8
Author: Mrityunjay Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 19:06:52

Poprzez union all, Połącz wszystkie tabele w jedną listę.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
 8
Author: openwonk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-13 21:48:00

Ponieważ nikt nie wspomniał o oficjalnym odniesieniu do SQLite, myślę, że przydałoby się odnieść do niego pod tym nagłówkiem:

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

Możesz manipulować bazą danych za pomocą poleceń opisanych w tym linku. Poza tym, Jeśli używasz systemu operacyjnego Windows i nie wiesz, gdzie jest powłoka poleceń, czyli na stronie SQLite:

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

Po pobraniu, Kliknij sqlite3plik exe inicjujący powłokę komend SQLite . Po zainicjowaniu sesji SQLite domyślnie używa bazy danych w pamięci, a nie Pliku na dysku, więc wszystkie zmiany zostaną utracone po zakończeniu sesji. Aby użyć trwałego pliku dyskowego jako bazy danych, wprowadź ".otwórz ex1.polecenie db " natychmiast po uruchomieniu okna terminala.

Powyższy przykład powoduje powstanie pliku bazy danych o nazwie "ex1.db " do otwarcia i użycia oraz utworzenia, jeśli wcześniej nie istniał. Ty możesz użyć pełnej ścieżki, aby upewnić się, że plik znajduje się w katalogu, w którym się znajduje. Użyj ukośników do przodu jako znaku separatora katalogów. Innymi słowy użyj "c:/work/ex1.db", nie " c:\work\ex1.db".

Aby zobaczyć wszystkie tabele w bazie danych, które wcześniej wybrałeś, wpisz polecenie .tabele Jak to jest powiedziane w powyższym linku.

Jeśli pracujesz w Windows, myślę, że przydałoby się przenieść ten sqlite.plik exe do tego samego folderu z innymi plikami Pythona. W w ten sposób plik Pythona zapisuje do, a powłoka SQLite odczytuje z .pliki db znajdują się na tej samej ścieżce.

 6
Author: oiyio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-23 23:54:23

".schema " wyświetli listę dostępnych tabel i ich wierszy, pokazując instrukcję używaną do tworzenia tabel:

sqlite> create table_a (id int, a int, b int);
sqlite> .schema table_a
CREATE TABLE table_a (id int, a int, b int);
 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 13:05:20

.da aby zobaczyć wszystkie bazy danych-Jedna o nazwie 'main '

Tabele tej bazy danych można zobaczyć przez

SELECT distinct tbl_name from sqlite_master order by 1;

Dołączone bazy danych wymagają prefiksów, które wybrałeś, jak w instrukcji Attaché np. aa (, bb, cc...) so:

SELECT distinct tbl_name from aa.sqlite_master order by 1;

Zauważ, że tutaj masz również widoki. Aby wykluczyć te dodaj where type = "table" before 'order'

 1
Author: Klaas-Z4us-V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-12 10:25:09