Nodejs 持久化一个 sqlite 内存数据库
Nodejs persist a sqlite in-memory database
我正在使用 nodejs sqlite 库 (https://github.com/mapbox/node-sqlite3)。如何将内存数据库持久保存到磁盘?因为在 c/c++ 实现中有备份 api 我怎么能用这个库在 nodejs 中坚持? (或与另一个 library/mechanism)
Using the backup API 是唯一的方法。
而 Node.js 没有实现这个 API.
只需使用普通的磁盘数据库即可。
您可以使用 PRAGMA synchronous = OFF.
使其与内存数据库一样不安全
好像node-sqlite3 now supports the backup api (see this test file). Unfortunately, the 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
而 better-sqlite3 有 documentation for its backup api!
就这么简单
db.backup(`my-backup.db`)
.then(() => {
console.log('backup complete!');
})
.catch((err) => {
console.log('backup failed:', err);
});
我正在使用 nodejs sqlite 库 (https://github.com/mapbox/node-sqlite3)。如何将内存数据库持久保存到磁盘?因为在 c/c++ 实现中有备份 api 我怎么能用这个库在 nodejs 中坚持? (或与另一个 library/mechanism)
Using the backup API 是唯一的方法。 而 Node.js 没有实现这个 API.
只需使用普通的磁盘数据库即可。 您可以使用 PRAGMA synchronous = OFF.
使其与内存数据库一样不安全好像node-sqlite3 now supports the backup api (see this test file). Unfortunately, the 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
而 better-sqlite3 有 documentation for its backup api!
就这么简单
db.backup(`my-backup.db`)
.then(() => {
console.log('backup complete!');
})
.catch((err) => {
console.log('backup failed:', err);
});