Apa SQL dapat digunakan untuk membuat daftar tabel, dan baris dalam tabel dalam file database SQLite - sekali saya telah terpasang dengan PASANG
perintah pada SQLite 3 tool command line?
Ada beberapa langkah untuk melihat tabel dalam sebuah database SQLite:
.tabel
.skema tablename 3. Cetak seluruh tabel:
SELECT * FROM namatabel; 4. Daftar semua tersedia SQLite prompt perintah:
.membantu
The .tabel
, dan .skema
"pembantu" fungsi don't melihat ke Melekat database: mereka hanya query SQLITE_MASTER
meja untuk "main" database. Akibatnya, jika anda digunakan
ATTACH some_file.db AS my_db;
kemudian yang perlu anda lakukan
SELECT name FROM my_db.sqlite_master WHERE type='table';
Perhatikan bahwa tabel sementara don't menunjukkan sampai dengan .tabel kedua: anda harus daftar
sqlite_temp_master` untuk itu:
SELECT name FROM sqlite_temp_master WHERE type='table';
Tampaknya anda perlu untuk pergi melalui sqlite_master meja, seperti ini:
SELECT * FROM dbname.sqlite_master WHERE type='table';
Dan kemudian secara manual pergi melalui masing-masing tabel dengan PILIH
atau mirip dengan yang terlihat pada baris.
The .DUMP
dan .SKEMA
perintah doesn't muncul untuk melihat database sama sekali.
Untuk menampilkan semua tabel, gunakan
SELECT name FROM sqlite_master WHERE type = "table"
Untuk menampilkan semua baris, saya kira anda dapat iterate melalui semua tabel dan hanya melakukan SELECT * pada masing-masing. Tapi mungkin DUMP adalah apa yang anda're setelah?
Ada perintah yang tersedia untuk ini pada baris perintah SQLite:
.tables ?PATTERN? List names of tables matching a LIKE pattern
Yang mengkonversi 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
Saya menggunakan query ini untuk mendapatkannya:
SELECT name FROM sqlite_master WHERE type='table'
Dan untuk penggunaan di iOS:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
Menurut dokumentasi, setara dengan MySQLs' SHOW TABLES;
adalah:
".tabel" perintah ini mirip dengan pengaturan mode daftar kemudian mengeksekusi query 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 jika satu tabel yang ada (atau untuk mendapatkan detailnya), lihat @LuizGeron jawabannya.
Cara termudah untuk melakukan ini adalah untuk membuka database secara langsung dan gunakan .dump
perintah, daripada melampirkan setelah menyerukan SQLite 3 alat shell.
Jadi... (asumsikan anda OS command line prompt $) bukan $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
Dari OS command line, buka database secara langsung:
$sqlite3 database.sqlite
sqlite3> .dump
Gunakan:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Karena tidak ada disebutkan tentang referensi resmi dari SQLite, saya pikir mungkin akan berguna untuk merujuk pada hal di bawah judul ini:
https://www.sqlite.org/cli.html
Anda dapat memanipulasi database anda menggunakan perintah yang dijelaskan di link ini. Selain itu, jika anda menggunakan OS Windows dan tidak tahu di mana perintah shell, yang di SQLite's situs:
https://www.sqlite.org/download.html
Setelah mengunduhnya, klik sqlite3.exe file untuk menginisialisasi SQLite perintah shell. Ketika hal ini dijalankan, secara default ini SQLite sesi ini menggunakan database di memori, bukan file pada disk, dan semua perubahan akan hilang ketika sidang keluar. Untuk penggunaan terus-menerus disk file database, masukkan ".buka ex1.db" perintah segera setelah jendela terminal mulai.
Contoh di atas akan menyebabkan file database yang bernama "ex1.db" untuk dibuka dan digunakan, dan dibuat jika tidak ada sebelumnya. Anda mungkin ingin menggunakan full path untuk memastikan bahwa file tersebut di direktori yang anda pikir itu adalah di. Menggunakan maju-garis miring sebagai pemisah direktori karakter. Dengan kata lain gunakan "c:/work/ex1.db" tidak "c:\work\ex1.db".
Untuk melihat semua tabel dalam database yang sebelumnya telah anda pilih, ketik perintah .tabel seperti yang dikatakan di link di atas.
Jika anda bekerja di Windows, saya pikir itu mungkin akan berguna untuk memindahkan ini sqlite.exe file ke folder yang sama dengan file Python. Dengan cara ini, file Python untuk menulis dan SQLite shell membaca dari .db file di jalan yang sama.
".skema" komando akan menampilkan daftar tabel yang tersedia dan mereka baris, dengan menunjukkan pernyataan yang digunakan untuk membuat tabel mengatakan:
sqlite> membuat table_a (id int, int, int b); sqlite> .skema table_a MEMBUAT TABEL table_a (id int, int, int b);
.da untuk melihat semua database - satu yang disebut 'utama'
tabel dari database ini dapat dilihat dengan
SELECT distinct tbl_name dari sqlite_master order by 1;
Terlampir database perlu prefix yang anda pilih dengan SEPERTI dalam pernyataan MELAMPIRKAN misalnya aa (, bb, cc...) jadi:
SELECT distinct tbl_name dari aa.sqlite_master order by 1;
Perhatikan bahwa di sini anda mendapatkan pandangan yang baik. Untuk mengecualikan ini menambah mana type = 'table' sebelum ' order'