Bir SQLite veritabanı dosyasındaki tabloları ve bu tabloların içindeki satırları listelemek için hangi SQL kullanılabilir - SQLite 3 komut satırı aracında ATTACH
komutunu ekledikten sonra?
.tables
ve .schema
"yardımcı" işlevleri ATTACHed veritabanlarına bakmaz: "ana" veritabanı için SQLITE_MASTER
tablosunu sorgularlar. Sonuç olarak, eğer kullandıysanız
ATTACH some_file.db AS my_db;
o zaman yapmalısın
SELECT name FROM my_db.sqlite_master WHERE type='table';
Geçici tabloların .tables
ile görünmediğini unutmayın: bunun için sqlite_temp_master
listelemeniz gerekir:
SELECT name FROM sqlite_temp_master WHERE type='table';
Bir SQLite veritabanında tabloları görmek için birkaç adım vardır:
Veritabanındaki tabloları listele:
.tables
Tablonun nasıl göründüğünü listeleyin:
.schema tablename
Tüm tabloyu yazdır:
SELECT * FROM tablename;
Mevcut SQLite İstemi komutlarının tümünü listele:
.help
Şunun gibi sqlite_master table üzerinden gitmeniz gerekiyor gibi görünüyor:
SELECT * FROM dbname.sqlite_master WHERE type='table';
Ve daha sonra el ile her tabloyu bir SELECT
veya benzeri satırlara bakmak için gözden geçirin.
.DUMP
ve .SCHEMA
komutları, veritabanını hiç görmemiş gibi görünür.
Tüm tabloları göstermek için
SELECT name FROM sqlite_master WHERE type = "table"
Tüm satırları göstermek için, sanırım tüm tabloları yineleyebilir ve her birinde bir SEÇİM * yapabilirsiniz. Ama belki bir DÖKÜM ne peşindesiniz?
Kullanılabilir komutları kontrol etmek için .help
kullanın.
.table
Bu komut mevcut veritabanınızın altındaki tüm tabloları gösterir.
SQLite komut satırında bunun için bir komut var:
.tables ?PATTERN? List names of tables matching a LIKE pattern
Aşağıdaki SQL'e dönüştürür:
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
Tabloları listelemek için ayrıca:
SELECT name FROM sqlite_master
WHERE type='table';
PRAGMA table_info(table-name);
öğesini dene
http://www.sqlite.org/pragma.html#schema
Bunu almak için bu sorguyu kullanıyorum:
SELECT name FROM sqlite_master WHERE type='table'
Ve iOS'ta kullanmak için:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
belgelerine göre, MySQL'in SHOW TABLES;
'un karşılığı:
".Tables" komutu liste modunu ayarlamaya benzer ve ardından aşağıdaki sorguyu çalıştırır:
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;
Bununla birlikte, tek bir tablonun olup olmadığını kontrol ediyorsanız (veya ayrıntılarını almak için), bkz. @LuizGeron answer.
SQLite 3'ün son sürümlerinden itibaren aşağıdakileri yapabilirsiniz:
.fullschema
tüm oluşturma ifadelerinizi görmek için.
Bunu yapmanın en kolay yolu, veritabanını doğrudan açmak ve SQLite 3 Shell aracını çağırdıktan sonra eklemek yerine .dump
komutunu kullanmaktır.
Yani ... (işletim sistemi komut satırınızın İsteminin $ olduğunu varsayalım) $sqlite3
yerine:
sqlite3> ATTACH database.sqlite as "attached"
İşletim sistemi komut satırınızdan veritabanını doğrudan açın:
$sqlite3 database.sqlite
sqlite3> .dump
Bir union all
aracılığıyla tüm tabloları tek bir listede birleştirin.
select name
from sqlite_master
where type='table'
union all
select name
from sqlite_temp_master
where type='table'
Kullanın:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
Kimse resmi SQLite referansından bahsetmediğinden, bu başlık altında atıfta bulunmanın faydalı olabileceğini düşünüyorum:
https://www.sqlite.org/cli.html
Veritabanınızı bu linkte açıklanan komutları kullanarak değiştirebilirsiniz. Ayrıca, Windows işletim sistemi kullanıyorsanız ve Shell komutunun nerede olduğunu bilmiyorsanız, SQLite sitesinde:
https://www.sqlite.org/download.html
İndirdikten sonra, SQLite komutunu başlatmak için sqlite3.exe dosyasını tıklayın Shell . Başlatıldığında, varsayılan olarak bu SQLite oturumu diskteki bir dosyayı değil, bellekteki bir veritabanını kullanıyor ve bu nedenle oturum sona erdiğinde tüm değişiklikler kaybolacak. Kalıcı bir disk dosyasını veritabanı olarak kullanmak için, terminal penceresi başladıktan hemen sonra ".open ex1.db" komutunu girin.
Yukarıdaki örnek, "ex1.db" adlı veritabanı dosyasının açılıp kullanılmasına ve önceden mevcut değilse oluşturulmasına neden olur. Dosyanın içinde olduğunu düşündüğünüz dizinde olduğundan emin olmak için tam bir yol adı kullanmak isteyebilirsiniz. Dizin ayırıcı karakteri olarak eğik çizgi kullanın. Diğer bir deyişle, "c:\work\ex1.db" değil, "c: /work/ex1.db" kullanın.
Daha önce seçtiğiniz veritabanındaki tüm tabloları görmek için, yukarıdaki bağlantıda söylendiği gibi .tables komutunu yazın.
Windows'ta çalışıyorsanız, bu sqlite.exe dosyasını diğer Python dosyalarıyla aynı klasöre taşımak yararlı olabilir. Bu şekilde, Python dosyası yazıyor ve SQLite Shell .db dosyalarından okuyor aynı yolda.
".Schema" komando, söz konusu tabloları oluşturmak için kullanılan ifadeyi göstererek kullanılabilir tabloları ve satırlarını listeler:
sqlite> table_a oluştur (id int, bir int, b int); sqlite> .schema table_a CREATE TABLE tablo_a (id int, bir int, b int);
.da tüm veritabanlarını görmek için - bir ' main ' adında bir
bu veritabanının tabloları
Sqlite_master sırasından farklı tbl_name SELECT 1;
Ekli veritabanları, ATTACH deyiminde AS ile seçtiğiniz öneklere ihtiyaç duyar. aa (, bb, cc ...) öyleyse:
SELECT farklı tbl_name aa.sqlite_master order by 1;
Burada da görüş aldığınızı unutmayın. Bunları hariç tutmak için where type = 'table' 'order' dan önce