Nodejs持久化一个SQLite内存数据库

yi0zb3m4  于 8个月前  发布在  SQLite
关注(0)|答案(2)|浏览(95)

我使用的是nodejs sqlite库(https://github.com/mapbox/node-sqlite3)。如何将内存中的数据库持久化到磁盘?既然在c/c++实现中有备份API,我怎么能用这个库持久化nodejs呢?(或与其他库/机制)

k97glaaz

k97glaaz1#

看起来node-sqlite3现在支持备份API(请参阅this test file)。不幸的是,API Documentation自2017年以来一直没有更新,所以很容易错过。
看起来最简单的方法是:

var backup = db.backup('test/tmp/backup.db');
        backup.step(-1, function(err) {
            if (err) throw err;
            backup.finish(function(err) {
                if (err) throw err;
                // It finished!
            });
        });

注意:最近推荐better-sqlite3

更好的是,sqlite3有它的备份API的文档!
那么简单

db.backup(`my-backup.db`)
  .then(() => {
    console.log('backup complete!');
  })
  .catch((err) => {
    console.log('backup failed:', err);
  });
waxmsbnn

waxmsbnn2#

在2016年,using the backup API是唯一的方法。Node.js没有实现这个API。看看Jared的回答。
无论如何,只要使用一个普通的磁盘数据库。您可以使用PRAGMA synchronous = OFF使其与内存中的数据库一样不安全。

相关问题