19

シンプルなデータベースを必要とする自分用のツールを作成しています。これは HTML5 IndexedDB API を学ぶ良い機会のように思えますが、どの時点でもデータを失わないことが重要です。

ブラウザーのプロファイル ディレクトリをバックアップすることでバックアップがとれると思いますが、別のコンピューターで作業する可能性も考えているので、データベースをエクスポートおよびインポートすると便利です。IndexedDB データベースをエクスポートおよびインポートする簡単な方法はありますか? ブラウザ固有のソリューションは問題ありません。

4

3 に答える 3

9

純粋な IndexedDB 仕様ではこのようなものはありませんが、これを実現する独自のメソッドを作成することは可能です。

データをインポートする基本的な手順は次のとおりです。

  1. IndexedDB データベースを開く
  2. オブジェクト ストアを作成する
  3. インデックスを追加
  4. オブジェクトをループし、それらを 1 つずつ追加します ( addorput操作を介して) 。

オブジェクト ストアをエクスポートするには、次のことができます。

  1. 左境界としてゼロを使用して、各ティックでカーソルを開きます
  2. リクエスト オブジェクトにコールバックを追加してonsuccess、行の値を取得します
  3. 各成功コールバックで、行を特権配列にプッシュしますvar

最後の行は を発行nullします。これは、カーソルがすべてのレコードを使い果たし、完了したときを把握するために監視できる状態です。その場合、オブジェクト ストアのバックアップを表すオブジェクトの特権配列を渡すエクスポート コールバックを呼び出すことができます。

于 2011-11-20T22:55:04.540 に答える
2

ここに投稿されたソリューションの上に Javascript を少し書いて WebSQL で実行できますが、IndexDBを学ぶ機会を逃してしまいます。

本当に IndexDB を徹底的に学びたいのであれば、自分でインポート/エクスポート ツールを書くことができるかもしれません。将来的には十分に必要になると思います。

于 2011-10-28T14:49:42.353 に答える
0

jStorageを使用してみてください。localStorage を使用しないもの (非推奨の Safari3 など) を除いて、ほとんどのブラウザーをサポートします。

多くの機能がありますが、それらを使用して目的を達成することができます。

セット(キー、値)

$.jStorage.set(key, value)

値をローカル ストレージに保存します。キーは文字列である必要があり、そうでない場合は例外がスローされます。value は、オブジェクトや配列、または XML ノードを含む、任意の JSONeable 値にすることができます。現在、XML ノードを他のオブジェクト内にネストすることはできません: $.jStorage.set("xml", xml_node) は問題ありませんが、$.jStorage.set("xml", {xml: xml_node}) は問題ありません。


get(キー[, デフォルト])

value = $.jStorage.get(key)
value = $.jStorage.get(key, "default value")

get は、キーが存在する場合は値を取得し、存在しない場合は default を取得します。キーは文字列である必要があり、そうでない場合は例外がスローされます。デフォルトは任意の値です。


流す()

$.jStorage.flush()

キャッシュをクリアします。


索引()

$.jStorage.index()

現在使用されているすべてのキーを配列として返します。

var index = $.jStorage.index();
console.log(index); // ["key1","key2","key3"]

そのことを念頭に置いて、既に DB がセットアップされていることを考えると、配列を使用var index = $.jStorage.index();して、配列の各キーを取得し、get() を呼び出して$.jStorage.get(key)大きな文字列に追加するjQuery .each() ループを作成できます。最終的には、.csv、または XML または json (選択) として解析できます。

これらのデータを手にして、$.jStorage.flush()クリアすることができます。

次に、新しい DB のデータをインポートする場合は、保存した文字列/ファイルを読み取り、.each() を使用してケイ/値パーの設定を開始するだけです$.jStorage.set(key, value)

DB をまだ持っていない場合は、新しい DB に$.jStorage.set(key, value). :)

于 2011-10-26T18:20:11.267 に答える