如何从本地PouchDB数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有CouchDB。
答案 0 :(得分:14)
有令人惊叹的@nolanlawson编码的功能。您不仅可以导入/导出它,还可以使用它进行各种操作。太棒了。
PouchDB复制流 https://github.com/nolanlawson/pouchdb-replication-stream
用于PouchDB / CouchDB复制的ReadableStreams和WritableStreams。 基本上,您只需附加即可复制两个数据库 一起流。这有很多用途:将数据库转储到文件中,以及 然后将该文件加载到另一个数据库中。做一个快速的初步 通过将CouchDB的内容转储到HTTP端点进行复制, 然后将其加载到浏览器中的PouchDB中。通过网络复制 插座?通过蓝牙?通过NFC?为什么不?自复制 stream只是JSON纯文本,你可以通过任何传输发送它 机制。定期备份数据库。
要导入的 PouchDB.load : https://github.com/nolanlawson/pouchdb-load
用于从CouchDB / PouchDB数据库加载转储的客户端工具。 对于转储,请从命令行中检出pouchdb-dump-cli以进行转储, 或者从您的Node.js中转储pouchdb-replication-stream 应用。此方法通常比标准快得多 复制,因为它使用较少的HTTP请求。所以这是一个很好的方式 快速加载数据库的初始状态。
答案 1 :(得分:3)
要导出,为什么不加载所有文档并将其保存到文件中?
db.allDocs({include_docs: true, attachments: true}).then(JSON.stringify);
答案 2 :(得分:0)
@mrded表示,最简单的解决方案是使用批处理操作:
<button onClick={handleExport}>Export</button>
<input type="file" onChange={handleImport}/>
function handleExport () {
db.allDocs({include_docs: true}, (error, doc) => {
if (error) console.error(error);
else download(
JSON.stringify(doc.rows.map(({doc}) => doc)),
'tracker.db',
'text/plain'
);
});
}
function handleImport ({target: {files: [file]}}) {
if (file) {
const reader = new FileReader();
reader.onload = ({target: {result}}) => {
db.bulkDocs(
JSON.parse(result),
{new_edits: false}, // not change revision
(...args) => console.log('DONE', args)
);
};
reader.readAsText(file);
}
}
还要检查download功能。