sqlite 直接将磁盘数据库加载到内存中

shyt4zoc  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(450)

使用C#和System.Data.SQLite.dll .NET Package 器(v1.0.117.0)。它支持SQLite 3.40.0。数据库文件通常小于50MB,我想将其加载到内存中。标准的文件支持的连接字符串可能是:

Data Source=C:\path\to\myDB.db;Version=3;

字符串
将数据库文件加载到内存中可以分几个阶段完成:
1.使用连接字符串创建空白数据库:

Data Source=:memory:;Version=3;New=True;


1.打开到磁盘文件的辅助连接(使用标准连接)。
1.从辅助连接读取表和表架构。
1.在内存数据库中创建所有表。
1.将数据从辅助连接复制到内存中的数据库表中。
1.关闭辅助连接。
这是可行的,但很复杂。我错过了一些简单的技巧吗?SQLite documentation on in-memory databases不清楚如何将数据库文件直接加载到内存中。有没有可能一步就把“这个数据库文件”直接加载到内存中?

ergxz8rk

ergxz8rk1#

我已经想好了。
1.设置两个连接。
1.内存数据库(CONNECTION_1)的连接字符串将是FullUri='file::memory:?cache=shared';
1.物理磁盘数据库(CONNECTION_2)的连接字符串将是Data Source=C:\\path\\to\\yourDB.db;Version=3;
1.打开两个连接。
1.在CONNECTION_2上执行命令VACUUM INTO 'file::memory:?cache=shared';
1.关闭CONNECTION_2。
当连接关闭时,内存中的数据库将被删除,因此现在保持CONNECTION_1打开。

相关问题