使用clsql将sqlite3内存数据库写入文件

时间:2014-12-04 00:41:55

标签: sqlite common-lisp clsql

正如问题所示。我使用":memory:"clsql:with-database创建了一个内存数据库,以提高写入/插入查询性能。但最后我确实希望在我的硬盘上有一个填充数据库的永久副本。

看起来应该是这样的:

(clsql:with-database (db (":memory:") :database-type :sqlite3)
  ;;entering db-scheme
  ;;entering a bunch of data
  (magically-write-database-to-file db file-path))

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您在数据库创建完成之前不关心数据一致性,只需使用普通数据库文件并将其配置为禁用transactionsdisk synchronization

(execute-command "PRAGMA journal_mode = OFF")
(execute-command "PRAGMA synchronous = OFF")

答案 1 :(得分:1)

我认为您只需要使用create-view-from-class创建表格,然后在对象上调用update-records-from-instance

但是,我不确定是否首先创建一个显式的内存数据库是有道理的。您可以先创建一个对象集合,然后一次性将它们放入数据库update-records-from-instance。 "查看课程" CLSQL实际上只是普通的类,有一些关于如何保存/加载它们的信息。只是在不保存的情况下更改对象,就没有魔力。