SQLite 3コマンドラインツールのコマンドでアタッチした後、SQLiteデータベースファイル内のテーブルとそれらのテーブル内の行を一覧表示するために使用できるSQLは何ですか?ATTACH
.tables
テーブルおよび.schema ?TABLE?
特定のテーブルのスキーマ。
.table 'bank_%'
または.table '%_empl'
、プレフィックス/サフィックスをクエリするための有効な構文!
SQLite 3コマンドラインツールのコマンドでアタッチした後、SQLiteデータベースファイル内のテーブルとそれらのテーブル内の行を一覧表示するために使用できるSQLは何ですか?ATTACH
.tables
テーブルおよび.schema ?TABLE?
特定のテーブルのスキーマ。
.table 'bank_%'
または.table '%_empl'
、プレフィックス/サフィックスをクエリするための有効な構文!
回答:
.tables
、および.schema
「ヘルパー」機能は、アタッチされたデータベースの中に見ていない:彼らだけのクエリ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';
"SELECT name FROM sqlite_master WHERE type='table'"
私にのみ
CREATE TEMPORARY TABLE
SQLコマンドで作成されたテーブルです。それらのコンテンツは、現在のデータベース接続が閉じられると削除され、データベースファイルに保存されることはありません。
ATTACH "some_file.db" AS my_db;
それは働きました!
SQLiteデータベースのテーブルを表示するには、いくつかの手順があります。
データベース内のテーブルを一覧表示します。
.tables
テーブルがどのように見えるかをリストします。
.schema tablename
テーブル全体を印刷します。
SELECT * FROM tablename;
利用可能なすべてのSQLiteプロンプトコマンドを一覧表示します。
.help
.table
と.tables
両方が許可されています。そのことについては、.ta
sqlite3のはあいまいで任意のコマンドを受け入れるために、同様に動作します。ヘルプによると、コマンドの名前は確かに ".tables"です(まだ誰かが注意を払っている場合)。
.tables
1つ以上のデータベースを開いた場合、テーブルは表示されませんATTACH '<path>' AS <name>;
が、ラッセの答えは表示されます。OPがATTACHingについて言及したので、私は彼がこの回答を受け入れないのは正しかったと信じています。編集:ちょうど下のアンソニーと他の人たちもこれを指摘していることに気づきました。
次のように、sqlite_masterテーブルを通過する必要があるようです。
SELECT * FROM dbname.sqlite_master WHERE type='table';
次にSELECT
、行を確認するために、手動でを使用して各テーブルを調べます。
.DUMP
そして.SCHEMA
コマンドは、すべてのデータベースを参照してください表示されません。
.tables
されたデータベースのテーブルを表示するように変更されましたか?
.tables
コマンドは、だけでなく、それらを表示するように変更されていますか?
すべてのテーブルを表示するには、
SELECT name FROM sqlite_master WHERE type = "table"
すべての行を表示するには、すべてのテーブルを反復処理して、それぞれにSELECT *を実行するだけでよいと思います。しかし、おそらくDUMPはあなたが求めているものですか?
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';
cur.execute(""" SELECT name FROM sqlite_master WHERE type='table';""")
またはいいえ?それは私にとってはうまくいきませんが、このコードがどこで実行されることになっているかはわかりません。
このクエリを使用して取得します。
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の回答を参照してください。
SQLite 3の最新バージョンでは、次のコマンドを発行できます。
.fullschema
すべてのcreateステートメントを確認します。
使用する:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
SQLiteの公式リファレンスについて誰も言及していないので、この見出しの下でそれを参照することは役立つと思います。
https://www.sqlite.org/cli.html
このリンクで説明されているコマンドを使用して、データベースを操作できます。さらに、Windows OSを使用していて、コマンドシェルの場所がわからない場合は、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シェルは同じパスにあります。
「.schema」コマンドは、上記のテーブルの作成に使用されたステートメントを表示することにより、使用可能なテーブルとその行をリストします。
sqlite> create table_a(id int、a int、b int); sqlite> .schema table_a CREATE TABLE table_a(id int、a int、b int);
すべてのデータベースを表示する.da-「メイン」と呼ばれるデータベース
このデータベースのテーブルは、
sqlite_masterから1つずつ異なるtbl_nameを選択します。
アタッチされたデータベースには、ステートメントATTACHでASで選択したプレフィックスが必要です(例:aa(、bb、cc ...))。
aa.sqlite_masterから1 つずつ異なるtbl_nameを選択します。
ここでもビューが表示されることに注意してください。これらを除外するには、type = 'table' を 'order' の前に 追加し ます