mql4 sqlite




どのようにATTACHでオープンされたSQLiteデータベースファイルのテーブルをリストする? (12)

".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);

SQLite 3コマンドラインツールのATTACHコマンドを使用してSQLiteデータベースファイル内のテーブルとそのテーブル内の行を一覧表示するにはどのSQLを使用できますか?


.daすべてのデータベースを参照する - 1つは、 ' メイン '

このデータベースのテーブルは

sqlite_master orderからdistinct tbl_nameを1つ選択します。

添付されたデータベースには、ATTACHの文でASと選択した接頭辞が必要です(例: aa (、bb、cc ...))。

aa.sqlite_masterの orderからdistinct tbl_nameを1つ選択します。

ここではビューも取得することに注意してください。 これらの除外を除外するには、 'order' 前に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シェル読み込みは同じパスにあります。


SQLiteデータベースのテーブルを確認するには、いくつかの手順があります。

  1. データベース内のテーブルを一覧表示する:

    .tables
    
  2. テーブルの表示方法をリストします。

    .schema tablename
    
  3. テーブル全体を印刷する:

    SELECT * FROM tablename;
    
  4. 利用可能なすべてのSQLiteプロンプトコマンドを一覧表示します:

    .help
    

.tables.schema "helper"関数は、ATTACHされたデータベースを調べません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 ?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

これを行う最も簡単な方法は、データベースを直接開き、SQLite 3シェルツールを呼び出した後に.dumpコマンドをアタッチするのではなく、使用することです。

だから...(あなたのOSのコマンドラインプロンプトが$sqlite3ではなく$であると仮定します)

sqlite3> ATTACH database.sqlite as "attached"

あなたのOSのコマンドラインから、データベースを直接開きます:

$sqlite3 database.sqlite
sqlite3> .dump

つかいます:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"

テーブルを一覧表示するには、次の操作もできます。

SELECT name FROM sqlite_master
WHERE type='table';

次のように、 sqlite_masterテーブルを調べる必要があるようです。

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

SELECT使用して各テーブルを手動で移動し、行を確認します。

.DUMPおよび.SCHEMAコマンドはデータベースをまったく表示しません。


私はそれを得るためにこのクエリを使用します:

SELECT name FROM sqlite_master WHERE type='table'

そしてiOSで使うには:

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




metadata