it-swarm-id.com

Bagaimana cara membuat daftar tabel dalam file database SQLite yang dibuka dengan ATTACH?

Apa SQL dapat digunakan untuk daftar tabel, dan baris dalam tabel-tabel dalam file database SQLite - setelah saya melampirkannya dengan perintah ATTACH pada alat baris perintah SQLite 3?

1113
izb

Fungsi "helper" .tables, dan .schema tidak melihat ke dalam database ATTACHed: mereka hanya query tabel SQLITE_MASTER untuk database "utama". Alhasil, jika digunakan

ATTACH some_file.db AS my_db;

maka yang perlu Anda lakukan

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

Perhatikan bahwa tabel sementara tidak muncul dengan .tables: Anda harus mencantumkan sqlite_temp_master untuk itu:

SELECT name FROM sqlite_temp_master WHERE type='table';
524
Anthony Williams

Ada beberapa langkah untuk melihat tabel dalam database SQLite:

  1. Daftar tabel di database Anda:

    .tables
    
  2. Sebutkan tabelnya:

    .schema tablename
    
  3. Cetak seluruh tabel:

    SELECT * FROM tablename;
    
  4. Daftar semua perintah SQLite Prompt yang tersedia:

    .help
    
1233
Mark Janssen

Tampaknya Anda harus melalui tabel sqlite_master , seperti ini:

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

Dan kemudian secara manual melalui setiap tabel dengan SELECT atau mirip untuk melihat baris.

Perintah .DUMP dan .SCHEMA tampaknya tidak melihat database sama sekali.

Untuk menampilkan semua tabel, gunakan

SELECT name FROM sqlite_master WHERE type = "table"

Untuk menunjukkan semua baris, saya kira Anda dapat mengulangi semua tabel dan hanya melakukan SELECT * pada masing-masing. Tapi mungkin DUMP yang Anda cari?

153
Christian Davén

Gunakan .help untuk memeriksa perintah yang tersedia.

.table

Perintah ini akan menampilkan semua tabel di bawah basis data Anda saat ini.

68
Antony.H

Ada perintah yang tersedia untuk ini di baris perintah SQLite:

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

Yang mengonversi ke SQL berikut:

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
40
flubba

Untuk membuat daftar tabel, Anda juga dapat melakukan:

SELECT name FROM sqlite_master
WHERE type='table';
36
Rafał Dowgird

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

29
Luiz Geron

Saya menggunakan kueri ini untuk mendapatkannya:

SELECT name FROM sqlite_master WHERE type='table'

Dan untuk digunakan di iOS:

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

Menurut dokumentasi , setara dengan SHOW TABLES; dari MySQL adalah:

Perintah ".tables" mirip dengan pengaturan mode daftar kemudian menjalankan kueri berikut:

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;

Namun, jika Anda memeriksa apakah ada satu tabel (atau untuk mendapatkan detailnya), lihat @LuizGeron answer.

15
Alix Axel

Pada versi terbaru dari SQLite 3 Anda dapat mengeluarkan:

.fullschema

untuk melihat semua pernyataan buat Anda.

15
pepper

Cara termudah untuk melakukan ini adalah membuka database secara langsung dan menggunakan perintah .dump, daripada melampirkannya setelah menjalankan alat SQLite 3 Shell.

Jadi ... (anggap Prompt baris perintah OS Anda adalah $) alih-alih $sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

Dari baris perintah OS Anda, buka database secara langsung:

$sqlite3 database.sqlite
sqlite3> .dump
11
Noah

Melalui union all, gabungkan semua tabel menjadi satu daftar.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
9
openwonk

Menggunakan:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
9
Mrityunjay Singh

Karena tidak ada yang menyebutkan tentang referensi resmi SQLite, saya pikir mungkin berguna untuk merujuknya di bawah judul ini:

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

Anda dapat memanipulasi basis data Anda menggunakan perintah yang dijelaskan dalam tautan ini. Selain itu, jika Anda menggunakan OS Windows dan tidak tahu di mana perintah Shell berada, itu ada di situs SQLite:

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

Setelah mengunduhnya, klik file sqlite3.exe untuk menginisialisasi perintah SQLite Shell . Ketika diinisialisasi, secara default sesi SQLite ini menggunakan basis data dalam memori, bukan file pada disk, dan semua perubahan akan hilang saat sesi keluar. Untuk menggunakan file disk tetap sebagai basis data, masukkan perintah ".open ex1.db" segera setelah jendela terminal dimulai.

Contoh di atas menyebabkan file database bernama "ex1.db" dibuka dan digunakan, dan dibuat jika sebelumnya tidak ada. Anda mungkin ingin menggunakan pathname lengkap untuk memastikan bahwa file ada di direktori yang Anda pikir itu masuk. Gunakan garis miring ke depan sebagai karakter pemisah direktori. Dengan kata lain gunakan "c: /work/ex1.db", bukan "c:\work\ex1.db".

Untuk melihat semua tabel dalam database yang telah Anda pilih sebelumnya, ketik perintah .tables seperti yang dikatakan pada tautan di atas.

Jika Anda bekerja di Windows, saya pikir mungkin berguna untuk memindahkan file sqlite.exe ini ke folder yang sama dengan file Python lainnya. Dengan cara ini, file Python menulis dan Shell SQLite membaca dari file .db berada di jalur yang sama.

7
oiyio

Perintah ".schema" akan mencantumkan tabel yang tersedia dan barisnya, dengan menunjukkan kepada Anda pernyataan yang digunakan untuk membuat tabel tersebut:

 sqlite> buat table_a (id int, int, b int); 
 sqlite> .schema table_a 
 BUAT TABEL table_a (id int, int, b int); 
5
trf

.da untuk melihat semua basis data - yang disebut ' main '

tabel dari basis data ini dapat dilihat oleh

PILIH tbl_name berbeda dari urutan sqlite_master sebanyak 1;

Basis data terlampir membutuhkan awalan yang Anda pilih dengan AS dalam pernyataan ATTACH mis. aa (, bb, cc ...) jadi:

SELECT tbl_name berbeda dari aa.sqlite_master pesan 1;

Perhatikan bahwa di sini Anda mendapatkan pandangan juga. Untuk mengecualikan ini tambahkan di mana type = 'table' sebelum 'order'

1
Klaas-Z4us-V