从SQLite命令行shell中打开数据库文件

时间:2012-01-29 23:34:24

标签: sqlite

我正在使用SQLite Command Line Shell。如文档所述,我可以通过将其作为可执行文件的参数提供来打开数据库:

sqlite3 data.db

我无法弄清楚如何在调用它之后从中的打开数据库文件,而不将该文件作为命令行参数提供(如果我说,请双击sqlite3.exe在Windows中)。 SQLite shell工具中用于指定数据库文件的命令是什么?

8 个答案:

答案 0 :(得分:98)

您可以附加一个甚至更多数据库并以与使用sqlite dbname.db相同的方式使用它

sqlite3
:
sqlite> attach "mydb.sqlite" as db1;

你可以看到所有附加的数据库     .databases

其中main以正常方式用于命令行db

.databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main                                                                       
1    temp                                                                       
2    ttt              c:\home\user\gg.ite                                   

答案 1 :(得分:16)

我认为打开单个数据库并开始查询的最简单方法是:

sqlite> .open "test.db"
sqlite> SELECT * FROM table_name ... ;

注意:这仅适用于版本3.8.2 +

答案 2 :(得分:9)

与在其他数据库系统中执行此操作的方式相同,您可以使用db的名称来标识双重命名表。唯一的表名可以直接使用。

select * from ttt.table_name;

或所有附加数据库中的表名是否唯一

select * from my_unique_table_name;

但我认为sqlite-shell仅用于手动查找或手动数据操作,因此这种方式更无关紧要

通常你会在脚本中使用sqlite-command-line

答案 3 :(得分:7)

Sqlite shell中用于打开数据库的命令是.open

语法是,

sqlite> .open dbasename.db

如果它是您要创建和打开的新数据库,则为

sqlite> .open --new dbasename.db

如果数据库存在于不同的文件夹中,则必须提及此路径:

sqlite> .open D:/MainFolder/SubFolder/...database.db

在Windows Command shell中,您应该使用' \'表示目录,但在SQLite目录中用' /'表示。 如果您仍然喜欢使用Windows表示法,则应为每个' \'

使用转义序列

答案 4 :(得分:2)

您只需在命令行中指定数据库文件名:

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

但谁知道如何从命令行指定多个数据库文件以从命令行执行查询?

答案 5 :(得分:1)

我想知道为什么没有人能够得到实际问的问题。它声明 SQLite shell工具中指定数据库文件的命令是什么?

sqlite db位于我的硬盘E:\ABCD\efg\mydb.db上。如何使用sqlite3命令行界面访问它? .open E:\ABCD\efg\mydb.db不起作用。这就是问题。

我发现做这项工作的最佳方式是

  • 将所有数据库文件复制粘贴到1个目录中(例如E:\ABCD\efg\mydbs
  • 在命令行中切换到该目录
  • 现在打开sqlite3,然后打开.open mydb.db

这样,您也可以对属于不同数据库的不同表执行join操作。

答案 6 :(得分:1)

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    sharedPreferences.getString("key","");

答案 7 :(得分:1)

较旧的 SQLite 命令行外壳(sqlite3.exe)似乎不提供.open命令或任何易于识别的替代方法。

尽管我没有找到明确的参考,但似乎.open命令是在版本 3.15 左右引入的。 SQLite Release History首先在2016-10-14(3.15.0)中提到了.open命令。