仅限内存中对SQLite数据库的修改

时间:2014-02-18 15:36:13

标签: perl sqlite sqltransaction

I'm using perl使用外部提供的sqlite数据库为静态服务的网站预生成大约9k页。

I have some algorithmic improvements to the original data,但为了保持一致,我认为如果我的脚本单独保留原始数据库并且仅在内存中修改数据会更有意义(如果需要,甚至整个数据库都应该适合RAM在生成网页之前,没有任何问题)。

我该怎么做?

我闻到我可以从这里的某种SQL事务功能中受益(在我的脚本完成后应该放弃),这是正确的吗?考虑到想要保持原始数据库文件不被修改的约束,这听起来是个好主意吗? (例如,在使用Perl中的SQLite时,来自正在进行的事务的数据存储在何处以及如何存储?)任何其他方式来实现我的需求? (我是perl和sql新手 - 寻找带注释的代码示例。)

我想作为最后的手段,我总是可以在文件系统中复制数据库文件,但这看起来像是一个丑陋而低效的解决方案。

2 个答案:

答案 0 :(得分:6)

我没有对此进行测试,但您应该可以使用SQLite backup API将数据库加载到内存中。 您可能会打开:memory:(或"",如果您需要临时的文件备份数据库),然后调用sqlite_backup_from_file一次性加载数据库。

e.g。 (另)

my $db = DBI->connect("dbi:SQLite:dbname=:memory:", '', '', {});
$db->sqlite_backup_from_file($ENV{DATABASE});
#Database should be loaded into the current memory DB at this point.

答案 1 :(得分:0)

您可以创建一个RAM磁盘并将数据库路径放在该磁盘上。详细信息取决于您的操作系统。