我正在制作一个供我自己使用的工具,需要一个简单的数据库。这似乎是学习HTML5 IndexedDB API的好机会,但重要的是我不要在任何时候丢失数据。
我认为备份浏览器的配置文件目录可以进行备份,但我也希望可以使用不同的计算机,因此导出和导入数据库会很好。有没有一种简单的方法来导出和导入IndexedDB数据库?浏览器特定的解决方案是可以的。
答案 0 :(得分:6)
pure IndexedDB spec中没有这样的内容,但是,可以编写自己的方法来完成此任务。
导入数据的基本步骤是
add
或put
操作)要导出对象库,您可以:
onsuccess
回调以捕获行值var
。最后一行将发出null
,这是一个你可以观察的状态,以便找出光标已用完所有记录并完成的时间。发生这种情况时,您可以调用导出回调,传递表示对象存储备份的特权对象数组。
答案 1 :(得分:2)
你可以在WebSQL中在解决方案posted here之上编写一些Javascript,但是你将错过学习IndexDB的机会。
如果您真的想从里面学习IndexDB,也许您可以自己编写导入/导出工具,我估计将来有足够的需求。
答案 2 :(得分:0)
尝试使用jStorage,它支持大多数浏览器,但没有localStorage的浏览器(如已弃用的Safari3)
它有很多功能,但我们可以尝试用它们实现你想要的东西:
设置(键,值)
$.jStorage.set(key, value)
将值保存到本地存储。 key必须是字符串否则抛出异常。 value可以是任何JSONeable值,包括对象和数组或XML节点。 目前,XML节点不能嵌套在其他对象中:$ .jStorage.set(“xml”,xml_node)可以,但$ .jStorage.set(“xml”,{xml:xml_node})不是。
获取(键[,默认])
value = $.jStorage.get(key)
value = $.jStorage.get(key, "default value")
如果密钥存在,则获取值,如果密钥不存在则返回默认值。 key必须是字符串否则抛出异常。默认值可以是任何值。
<强>齐平()强>
$.jStorage.flush()
清除缓存。
<强>指数()强>
$.jStorage.index()
返回当前用作数组的所有键。
var index = $.jStorage.index();
console.log(index); // ["key1","key2","key3"]
考虑到这一点,考虑到你已经设置了数据库,你可以使用var index = $.jStorage.index();
和数组,创建一个jQuery .each()循环,获取数组的每个键并调用get( )$.jStorage.get(key)
并添加一个大字符串,最后可以解析为.csv,甚至是XML或json(你选择)。
掌握这些数据后,您可以$.jStorage.flush()
清除。
然后,如果要导入新数据库的数据,您需要做的就是.each()读取您保存的字符串/文件并开始设置kay / value与{{1 }}
如果您还没有数据库,只需使用$.jStorage.set(key, value)
填充新数据库。
:)