SQLiteデータベースファイルのテーブルとそれらのテーブル内の行を一覧表示するために使用できるSQL - SQLite 3コマンドラインツールのATTACH
コマンドで添付した後は?
.tables
と.schema
の "helper"関数はATTACHされたデータベースを調べません。それらは単に "main"データベースのためにSQLITE_MASTER
テーブルを問い合わせるだけです。その結果、あなたが使用した場合
ATTACH some_file.db AS my_db;
それならあなたはする必要があります
SELECT name FROM my_db.sqlite_master WHERE type='table';
一時テーブルも.tables
と一緒に表示されないことに注意してください。そのためにはsqlite_temp_master
をリストする必要があります。
SELECT name FROM sqlite_temp_master WHERE type='table';
SQLiteデータベースのテーブルを見るためのいくつかのステップがあります。
データベース内のテーブルを一覧表示します。
.tables
テーブルの外観を一覧表示します。
.schema tablename
テーブル全体を印刷します。
SELECT * FROM tablename;
利用可能なすべてのSQLiteプロンプトコマンドを一覧表示します。
.help
このように、 sqlite_master テーブルを通過する必要があるようです。
SELECT * FROM dbname.sqlite_master WHERE type='table';
そして、手動で各テーブルをSELECT
などで調べて行を調べます。
.DUMP
および.SCHEMA
コマンドは、データベースをまったく認識していないようです。
すべてのテーブルを表示するには、
SELECT name FROM sqlite_master WHERE type = "table"
すべての行を表示するには、すべてのテーブルを反復処理して、各テーブルに対してSELECT *を実行するだけでよいと思います。しかし、おそらくダンプはあなたが求めているものですか?
利用可能なコマンドを確認するには.help
を使用してください。
.table
このコマンドは、現在のデータベースの下にあるすべてのテーブルを表示します。
SQLiteコマンドラインでこれに利用できるコマンドがあります:
.tables ?PATTERN? List names of tables matching a LIKE pattern
これは次の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
テーブルを一覧表示するには、次のようにすることもできます。
SELECT name FROM sqlite_master
WHERE type='table';
PRAGMA table_info(table-name);
を試す
http://www.sqlite.org/pragma.html#schema
私はそれを取得するためにこのクエリを使用します。
SELECT name FROM sqlite_master WHERE type='table'
そしてiOSで使うには:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
ドキュメント によると、MySQLのSHOW TABLES;
と同等のものは次のとおりです。
".tables"コマンドは、リストモードを設定してから次のクエリを実行するのと似ています。
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;
ただし、単一のテーブルが存在するかどうか(またはその詳細を取得するため)を確認している場合は、 @LuizGeron answerを参照してください。
SQLite 3の最新版の時点であなたが発行することができます:
.fullschema
すべてのcreateステートメントを見るために。
これを行う最も簡単な方法は、SQLite 3シェルツールを呼び出した後にアタッチするのではなく、データベースを直接開いて.dump
コマンドを使用することです。
$sqlite3
の代わりに...(あなたのOSのコマンドラインプロンプトが$であると仮定):
sqlite3> ATTACH database.sqlite as "attached"
OSのコマンドラインからデータベースを直接開きます。
$sqlite3 database.sqlite
sqlite3> .dump
union all
を介して、すべてのテーブルを1つのリストにまとめます。
select name
from sqlite_master
where type='table'
union all
select name
from sqlite_temp_master
where type='table'
つかいます:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
誰もSQLiteの公式な言及について言及していないので、私はこの見出しの下でそれを参照することが役に立つかもしれないと思います:
https://www.sqlite.org/cli.html
このリンクに記載されているコマンドを使用してデータベースを操作できます。また、 Windows OSを使用している場合 で、コマンドShellがどこにあるのかわからない場合は、SQLiteのサイトにあります。
https://www.sqlite.org/download.html
それをダウンロードした後、 sqlite3.exeファイルをクリックしてSQLiteコマンドシェルを初期化します 。初期化されると、デフォルトではこのSQLiteセッションはディスク上のファイルではなくインメモリデータベースを使用するため、セッションが終了するとすべての変更は失われます。永続ディスクファイルをデータベースとして使用するには、ターミナルウィンドウが起動した直後に「.open ex1.db」コマンドを入力します。
上記の例では、 "ex1.db"という名前のデータベースファイルが開かれて使用され、以前に存在しない場合は作成されます。ファイルがあると思うディレクトリに確実に存在するように、絶対パス名を使用することをお勧めします。ディレクトリの区切り文字としては、スラッシュを使用してください。つまり、 "c:\ work\ex1.db"ではなく、 "c:/work/ex1.db"を使用してください。
以前に選択したデータベース内のすべてのテーブルを表示するには、上記のリンクで説明されているように、コマンド .tables を入力します。
Windowsで作業している場合は、このsqlite.exeファイルを他のPythonファイルと同じフォルダーに移動すると便利かもしれません。このように、Pythonファイルは.dbファイルに書き込みを行い、SQLiteシェルは.dbファイルからの読み取りを同じパスに入れます。
".schema"コマンドは、利用可能なテーブルとその行を一覧表示します。そのテーブルを作成するためのステートメントを表示します。
sqlite> create table_a(id、int、b int); sqlite> .schema table_a CREATE TABLE table_a(id、int、b int); [ ]
すべてのデータベースを見るための.da - 'main'という名前のもの
このデータベースのテーブルは、
Sqlite_masterの順序とは異なるtbl_nameを1つずつSELECTします。
アタッチされたデータベースには、ATTACHステートメントでASで選択した接頭辞が必要です。 aa(、bb、cc ...)
1からaa.sqlite_masterの順序で異なるtbl_nameを選択します。
ここでもビューが表示されます。これらを除外するには、 'order'の前にwhere type = 'table'を追加します。