SQLiteコマンドラインシェルを使用しています。文書化されているように、実行可能ファイルの引数として指定することで、データベースを開くことができます。
sqlite3 data.db
コマンドライン引数としてファイルを指定せずにデータベースファイルを呼び出した後で、ツール内からデータベースファイルを開く方法がわかりません(Windowsでsqlite3.exeをダブルクリックした場合など)。データベースファイルを指定するSQLiteシェルツール内のコマンドは何ですか?
SQLiteコマンドラインシェルを使用しています。文書化されているように、実行可能ファイルの引数として指定することで、データベースを開くことができます。
sqlite3 data.db
コマンドライン引数としてファイルを指定せずにデータベースファイルを呼び出した後で、ツール内からデータベースファイルを開く方法がわかりません(Windowsでsqlite3.exeをダブルクリックした場合など)。データベースファイルを指定するSQLiteシェルツール内のコマンドは何ですか?
回答:
sqlite dbname.dbを使用するのと同じように、1つ以上のデータベースを接続して操作できます。
sqlite3
:
sqlite> attach "mydb.sqlite" as db1;
そしてuは.databasesですべての接続されたデータベースを見ることができます
通常の方法では、メインはコマンドラインdbに使用されます
.databases
seq name file
--- --------------- ----------------------------------------------------------
0 main
1 temp
2 ttt c:\home\user\gg.ite
SELECT * FROM db1.tbl1;
データベースを開くためのSqliteシェル内のコマンドは.openです。
構文は、
sqlite> .open dbasename.db
作成して開きたい新しいデータベースの場合は、
sqlite> .open --new dbasename.db
データベースが別のフォルダーに存在する場合、パスは次のように指定する必要があります。
sqlite> .open D:/MainFolder/SubFolder/...database.db
Windowsコマンドシェルでは、ディレクトリを表すには「\」を使用する必要がありますが、SQLiteディレクトリでは「/」で表します。それでもWindows表記を使用する場合は、すべての '\'にエスケープシーケンスを使用する必要があります。
他のdbシステムで行うのと同じように、ダブルネームテーブルを識別するためにdbの名前を使用できます。一意のテーブル名を直接使用できます。
select * from ttt.table_name;
または、接続されているすべてのデータベースのテーブル名が一意である場合
select * from my_unique_table_name;
しかし、私はsqlite-shellのofは手動のルックアップまたは手動のデータ操作のためだけであると思うので、この方法はより重要ではありません
通常は、スクリプトでsqlite-command-lineを使用します
コマンドラインでデータベースファイル名を指定するだけです。
bash-3.2 # sqlite3 UserDb.sqlite
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> .databases
main: /db/UserDb.sqlite
sqlite> .tables
accountLevelSettings genres syncedThumbs
collectionActivity recordingFilter thumbs
contentStatus syncedContentStatus
sqlite> select count(*) from genres;
10
さらに、コマンドラインからクエリを実行できます。
bash-3.2 # sqlite3 UserDb.sqlite 'select count(*) from genres'
10
SQLiteシェルから別のデータベースファイルをアタッチできます。
sqlite> attach database 'RelDb.sqlite' as RelDb;
sqlite> .databases
main: /db/UserDb.sqlite
RelDb: /db/RelDb_1.sqlite
sqlite> .tables
RelDb.collectionRelationship contentStatus
RelDb.contentRelationship genres
RelDb.leagueRelationship recordingFilter
RelDb.localizedString syncedContentStatus
accountLevelSettings syncedThumbs
collectionActivity thumbs
この2番目のデータベースのテーブルには、データベースのプレフィックスを介してアクセスできます。
sqlite> select count(*) from RelDb.localizedString;
2442
しかし、コマンドラインからクエリを実行するためにコマンドラインから複数のデータベースファイルを指定する方法を知っている人はいますか?
create different db files using
>sqlite3 test1.db
sqlite> create table test1 (name text);
sqlite> insert into test1 values('sourav');
sqlite>.exit
>sqlite3 test2.db
sqlite> create table test2 (eid integer);
sqlite> insert into test2 values (6);
sqlite>.exit
>sqlite
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open test1.db
sqlite> select * from test1;
sourav
sqlite> .open test2.db
sqlite> select * from test1;
Error: no such table: test1
sqlite> select * from test2;
6
sqlite> .exit
>
Thank YOU.
古いSQLiteコマンドラインシェル(sqlite3.exe
)は、.open
コマンドや簡単に識別できる代替手段を提供していないようです。
明確な参照は見つかりませんでしたが、この.open
コマンドはバージョン3.15で導入されたようです。SQLiteのリリース履歴は、最初に言及している.open
2016年10月14日(3.15.0)を使用してコマンドを。
なぜ実際に質問された内容を誰も取得できなかったのかと思います。データベースファイルを指定するSQLiteシェルツール内のコマンドは何ですか?
sqlite dbが私のハードディスクにありE:\ABCD\efg\mydb.db
ます。sqlite3コマンドラインインターフェースでどうやってそれにアクセスするのですか?.open E:\ABCD\efg\mydb.db
動作しません。これが質問されたものです。
仕事をする最善の方法は
E:\ABCD\efg\mydbs
)sqlite3
て.open mydb.db
このようにして、さまざまなデータベースに属するさまざまなテーブルに対しても結合操作を実行できます。
E:
最初に試しましたか?多くの場合、Windowsは自分で文字を変更せずに他のドライブのディレクトリを参照することを好みません。