使用 C# 和
System.Data.SQLite.dll
.NET 包装器 (v1.0.117.0)。这支持 SQLite 3.40.0。数据库文件通常小于 50 MB,我想将其加载到内存中。标准文件支持的连接字符串可能是:
Data Source=C:\path\to\myDB.db;Version=3;
将数据库文件加载到内存中可以分几个阶段完成:
使用连接字符串创建一个空白数据库:
Data Source=:memory:;Version=3;New=True;
打开到磁盘文件的辅助连接(使用标准连接)。
从辅助连接读取表和表架构。
创建内存数据库中的所有表。
将数据从辅助连接复制到内存数据库表中。
关闭辅助连接。
这可行,但很复杂。我错过了一些简单的技巧吗? 有关内存数据库的 SQLite 文档 并不清楚如何将数据库文件直接加载到内存中。是否可以一步将“这个数据库文件”直接加载到内存中?
我已经解决了。
设置两个连接。
内存数据库 (CONNECTION_1) 的连接字符串将为
FullUri='file::memory:?cache=shared';
。
物理磁盘数据库 (CONNECTION_2) 的连接字符串将为
Data Source=C:\\path\\to\\yourDB.db;Version=3;
。
打开两个连接。
在 CONNECTION_2 上执行命令
VACUUM INTO 'file::memory:?cache=shared';
。
关闭 CONNECTION_2。
连接关闭时,内存数据库将被删除,因此请暂时保持 CONNECTION_1 打开。