我正在使用SQLite命令行外壳程序。如前所述,我可以通过将数据库作为可执行文件的参数提供来打开数据库:
sqlite3 data.db
我无法弄清楚如何在调用工具后不从文件中提供数据库文件作为命令行参数(例如,如果我在Windows中双击sqlite3.exe)来打开该文件。SQLite Shell工具中用于指定数据库文件的命令是什么?
我正在使用SQLite命令行外壳程序。如前所述,我可以通过将数据库作为可执行文件的参数提供来打开数据库:
sqlite3 data.db
我无法弄清楚如何在调用工具后不从文件中提供数据库文件作为命令行参数(例如,如果我在Windows中双击sqlite3.exe)来打开该文件。SQLite Shell工具中用于指定数据库文件的命令是什么?
Answers:
您可以附加一个或多个数据库并以与使用sqlite dbname.db相同的方式使用它
sqlite3
:
sqlite> attach "mydb.sqlite" as db1;
您可以看到所有带有.databases的附加数据库
正常情况下,main用于命令行数据库
.databases
seq name file
--- --------------- ----------------------------------------------------------
0 main
1 temp
2 ttt c:\home\user\gg.ite
SELECT * FROM db1.tbl1;
与在其他数据库系统中执行此操作的方法相同,可以使用数据库名称来标识双命名表。唯一的表名可以直接使用。
select * from ttt.table_name;
或者所有附加数据库中的表名都是唯一的
select * from my_unique_table_name;
但是我认为sqlite-shell的仅用于手动查找或手动数据操作,因此这种方式更加无关紧要
通常您会在脚本中使用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 Shell附加另一个数据库文件:
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
通过数据库的前缀可以访问该第二数据库中的表:
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命令行shell(sqlite3.exe
)似乎不提供该.open
命令或任何易于识别的替代方法。
尽管我没有找到明确的参考,但该.open
命令似乎是在3.15版左右引入的。在SQLite的发布历史首先提到了.open
与2016年10月14日(3.15.0)命令。
我不知道为什么没人能真正回答这个问题。它说明了SQLite Shell工具中用于指定数据库文件的命令是什么?
sqlite db在我的硬盘上E:\ABCD\efg\mydb.db
。如何使用sqlite3命令行界面访问它?.open E:\ABCD\efg\mydb.db
不起作用。这是问什么问题。
我发现做这项工作的最好方法是
E:\ABCD\efg\mydbs
)sqlite3
,然后.open mydb.db
这样,您也可以对属于不同数据库的不同表执行联接操作。
E:
先尝试了吗?Windows通常不喜欢自己更改字母而不引用其他驱动器上的目录。