我正在为我自己的使用制作一个需要简单数据库的工具。这似乎是学习HTML5 IndexedDB API的好机会,但重要的是我不会在任何时候丢失数据。导出和导入IndexedDB数据
我想备份浏览器的配置文件目录会做备份,但我也想用不同的计算机工作,所以导出和导入数据库会很好。有没有简单的方法来导出和导入IndexedDB数据库?浏览器特定的解决方案可以。
我正在为我自己的使用制作一个需要简单数据库的工具。这似乎是学习HTML5 IndexedDB API的好机会,但重要的是我不会在任何时候丢失数据。导出和导入IndexedDB数据
我想备份浏览器的配置文件目录会做备份,但我也想用不同的计算机工作,所以导出和导入数据库会很好。有没有简单的方法来导出和导入IndexedDB数据库?浏览器特定的解决方案可以。
尝试使用jStorage,它支持大多数浏览器,除了没有的localStorage的那些(如弃用Safari3)
它有很多的功能,但我们可以尝试实现你想要的那些:
集(key,value)
$.jStorage.set(key, value)
将值保存到本地存储。键需要字符串,否则引发异常。值可以是任何JSONeable值,包括对象和数组或XML节点。 当前XML节点不能嵌套在其他对象中:$ .jStorage.set(“xml”,xml_node)正常,但$ .jStorage.set(“xml”,{xml:xml_node})不是。
GET(键[,默认值])如果键不存在,或者如果它不默认
value = $.jStorage.get(key)
value = $.jStorage.get(key, "default value")
GET检索值。键需要字符串,否则引发异常。默认值可以是任何值。
平齐()
$.jStorage.flush()
清除高速缓存。
指数()
$.jStorage.index()
返回所有键当前用作阵列。
var index = $.jStorage.index();
console.log(index); // ["key1","key2","key3"]
考虑到这一点,考虑到你已经有一个数据库设置,您可以使用var index = $.jStorage.index();
并与阵列,创建一个jQuery。每()循环得到阵列和呼叫的每个关键get()$.jStorage.get(key)
并添加到一个大字符串中,最后可以解析为.csv,甚至XML或json(您可以选择)。
有了这些数据,你可以通过$.jStorage.flush()
来清除。然后,如果您想要导入新数据库的数据,您只需要一个.each()读取已保存的字符串/文件并开始设置与$.jStorage.set(key, value)
的kay/value par。
如果您还没有数据库,只需使用$.jStorage.set(key, value)
填充一个新数据库即可。 :)
这并不回答问题本身,但提供了一个解决方案的基本问题,所以+1。 – JJJ
对于今天(回答发布后2年)添加-1来说明为什么downvoted的人会很有趣。 – RaphaelDDL
1年后,让我回答你的问题,这可能是出于同样的原因,我认为downvoting:它不回答刚才Juhana已经提到的问题 –
您可以在WebSQL中写一点Javascript在解决方案posted here的顶部,但是您将错失学习IndexDB的机会。
如果你真的想学习IndexDB,也许你可以自己编写导入/导出工具,我估计未来会有足够的需求。
在pure IndexedDB spec中没有这样的东西,但是,可以编写自己的方法来完成这个任务。
的基本步骤来导入数据到
add
或put
操作)对于导出对象存储区,您可以:
onsuccess
回调请求对象来捕获行值var
。最后一行将发出null
,这是一个状态,您可以观察指出游标耗尽其所有记录并完成操作的状态。发生这种情况时,可以调用导出回调函数,传递代表对象存储库备份的特权对象数组。
根据经验,我可以说编辑的回应是唯一的方法。另外需要警告的是,您必须非常聪明地使用所需的所有异步编程。我建议有一个缓存对象,所有的数据都被转储。 –
我已经写了一个模块[indexeddb-export-import](https://github.com/Polarisation/indexeddb-export-import),它基本上按照这个答案中的描述。 –
我有点惊讶,没有任何类似的网页检查器的选项。 Chrome的检查器可以让你看到数据库,但是看起来你并没有太多的互动。 – Bart
Juhana有幸运吗? –
@StevendeSalas尚未 - 我想这可能是新的,这样的工具还不存在。 – JJJ