2

如问题所示。":memory:"我使用and创建了一个内存数据库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))

我怎样才能做到这一点?

4

2 回答 2

4

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

(execute-command "PRAGMA journal_mode = OFF")
(execute-command "PRAGMA synchronous = OFF")
于 2014-12-04T09:04:23.970 回答
1

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

不过,我不确定首先创建显式内存数据库是否真的有意义。您可以先创建一个对象集合,然后update-records-from-instance一次性将它们放入数据库。CLSQL 的“视图类”实际上只是普通的类,其中包含一些关于如何保存/加载它们的信息。当您只更改对象而不保存时,没有任何魔法发生。

于 2014-12-04T02:49:23.920 回答