如何创建 sqlite3 内存数据库?
Posted
技术标签:
【中文标题】如何创建 sqlite3 内存数据库?【英文标题】:How do I create a sqllite3 in-memory database? 【发布时间】:2010-09-23 04:40:12 【问题描述】:sqlite3 的appropriate uses 之一是“内存数据库”。对于我的 C++ 应用程序来说,这听起来像是一个非常有用的工具。有没有人有一个例子说明这是如何在 C 或 C++ 中完成的?我正在寻找一种规范的方法来将几个平面文件放入内存数据库中,然后进行一些连接。
【问题讨论】:
【参考方案1】:只需打开文件 :memory: 就可以了(至少在 php 中是这样)。
您提到您想读取几个平面文件并对其进行连接。如果可以将平面文件存储为 SQLite 数据库,则可以通过将一个附加到另一个来直接使用两者:
ATTACH foo.db AS foo
然后像这样引用 foo 中的表:
SELECT * FROM foo.users
通过这种方式,您无需创建内存数据库即可进行连接。
【讨论】:
【参考方案2】:其实很简单。使用 C/C++ API 打开数据库时,只需指定 ':memory:' 作为数据库文件名。这是引擎将识别的特殊常数。这实际上适用于其他语言,例如 Python 或 Ruby,因为它们通常只是包装 C/C++ API。详情请参阅http://sqlite.org/c3ref/open.html。
【讨论】:
【参考方案3】:如果您希望 SQLite 不使用临时文件作为日志,例如,除了手动请求连接、断开连接、附加或分离时,您不希望任何文件活动。然后在连接到 ":memory:" 数据库后在运行时使用以下两个 pragma。
PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;
来自docs.
【讨论】:
以上是关于如何创建 sqlite3 内存数据库?的主要内容,如果未能解决你的问题,请参考以下文章