如何创建一个SQLite3内存数据库?

11

SQLite3 的一个适当的用途是“内存数据库”。这听起来像是我C++应用程序中一个非常有用的工具。 有人有在C或C++中实现此功能的示例吗?我特别寻找一种将几个平面文件加载到内存数据库中,然后执行一些连接操作的规范方法。

3个回答

16

其实很简单。只需在使用C/C++ API打开数据库时,指定':memory:'作为数据库文件名即可。它是引擎能够识别的一个特殊常量。对于其他语言(如Python或Ruby),同样适用,因为它们通常只是包装了C/C++ API。有关完整详细信息,请参见http://sqlite.org/c3ref/open.html


5

只需打开文件: memory:,这应该可以解决问题(至少在PHP中是这样)。

您提到希望读取几个平面文件并进行连接。如果可能将平面文件存储为SQLite数据库,则可以直接将一个附加到另一个上:

ATTACH foo.db AS foo

然后可以这样参考 foo 表中的表格:
SELECT * FROM foo.users

这样你就可以在不需要创建内存数据库的情况下完成连接操作。

5

如果你想让SQLite不使用临时文件作为日志,例如,你不想有除手动请求连接、断开连接、附加或分离之外的任何文件活动。那么在连接到“:memory:”数据库后,在运行时使用以下两个特权。

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

来自文档


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