如何从 PouchDB 导入/导出数据库

Posted

技术标签:

【中文标题】如何从 PouchDB 导入/导出数据库【英文标题】:How to import/export database from PouchDB 【发布时间】:2016-09-10 19:19:29 【问题描述】:

如何从本地 PouchDB 数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有 CouchDB。

【问题讨论】:

【参考方案1】:

正如@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 函数。

【讨论】:

谢谢,我集成了那个解决方案,但是我有一个问题,文件删除不同步(我导出的文件被 bulkDocs(数据,new_edits: true)删除和导入),但不同步,什么的想法?【参考方案2】:

要导出,为什么不直接加载所有文档并将它们保存到文件中?

db.allDocs(include_docs: true, attachments: true).then(JSON.stringify);

【讨论】:

它不工作 blob 类型的数据,它只存储原始数据。你知道任何解决方案吗? 谢谢,我集成了那个解决方案,但是我有一个问题,文件删除不同步(我导出的文件被 bulkDocs(数据,new_edits: true)删除和导入),但不同步,什么的想法?【参考方案3】:

令人惊叹的@nolanlawson 编写了一些功能。您不仅可以导入/导出它,还可以用它做各种事情。太棒了。

PouchDB 复制流 https://github.com/nolanlawson/pouchdb-replication-stream

用于 PouchDB/CouchDB 复制的 ReadableStreams 和 WritableStreams。 基本上,您只需附加 流在一起。这有很多用途:将数据库转储到文件中,以及 然后将同一个文件加载到另一个数据库中。做一个快速的初始 通过将 CouchDB 的内容转储到 HTTP 端点进行复制, 然后将其加载到浏览器中的 PouchDB 中。通过网络复制 插座?通过蓝牙?通过NFC?为什么不?由于复制 流只是 JSON 明文,您可以通过任何传输方式发送它 机制。定期备份您的数据库。

PouchDB.load 导入: https://github.com/nolanlawson/pouchdb-load

用于从 CouchDB/PouchDB 数据库加载转储的客户端工具。 对于转储,请查看 pouchdb-dump-cli 从命令行转储, 或 pouchdb-replication-stream 从您的 Node.js 中转储 应用。这种方法通常比标准方法快得多 复制,因为它使用较少的 HTTP 请求。所以这是一个好方法 快速加载数据库的初始状态。

【讨论】:

感谢您的赞誉。 :) 另请查看这篇博客文章,解释如何转储和加载 SQLite 文件:pouchdb.com/2016/04/28/prebuilt-databases-with-pouchdb.html

以上是关于如何从 PouchDB 导入/导出数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何用plsql从oracle中导入导出数据

如何从一个导出的DMP文件中,导入某一个表

如何使用 Flyway 从 DB Schema 导出或导入数据

如何从 DataGrip 导出/导入数据源?

如何从 SQL SERVER 导出/导入数据库

如何用plsql从oracle中导入导出数据