如何在sqlite中更改数据库名称?

6
我需要简单地更改数据库的名称,但似乎在SQLite中ALTER DATABASE命令无效。
我的情况是,我有一个SQLite加密的数据库,现在我想重新命名它。在手动重命名数据库文件后,加密无法正常工作。因此,我尝试使用命令更改数据库的名称。问题看起来是由于加密引起的。

你为什么需要它?你能分享一下场景吗? - Yaqub Ahmad
@YaqubAhmad,如果你在多数据库环境中构建查询,你需要明确指定名称。将这些查询复制到单个数据库环境中需要删除数据库名称,除非你可以给单个数据库一个与查询使用的名称匹配的名称。 - Patrick
对于main函数来说,可以命名SQLite数据库吗? - Ciro Santilli OurBigBook.com
3个回答

15
每个SQLite文件只包含一个数据库,该数据库没有名称。就我所知,第一个打开的数据库有一个“虚拟”名称main,当您想引用它时,例如当您连接补充数据库时。您可以选择所附加数据库的“虚拟”名称。
[someone@somewhere tmp]$ sqlite3 bla.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /tmp/bla.db                                  
sqlite> attach database 'example.db' as another_db;
sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /tmp/bla.db                                  
2    another_db       /tmp/example.db       

否则,Laurent 是正确的,如果您想在这里重命名数据库文件,那么可以这样做。

11

在SQLite中没有数据库名称,因为每个文件只有一个数据库。也许你想要做的是重命名SQLite文件。


1
我尝试过,但原始文件是加密的,当我更改文件名时,同样的密码就不能使用了。 - sagar
5
这不是真的,SQLite允许你“attach”另一个数据库。而且,使用.databases命令可以列出它们。 - intijk
4
在 SQLite 中,文件名与数据库名无关。默认情况下有两个数据库:main 和 temp。 - AKstat

2
在最近版本的Sqlite3中,有一个.backup命令。
如果数据库不是很大,这可能是一个解决方案:
S:\>sqlite3 encrypted.db
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .backup new.db
sqlite> .q

然后
S:\>sqlite3 new.db
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接