2011-10-17 150 views
13

私は自分のために簡単なデータベースが必要なツールを作っています。これはHTML5 IndexedDB APIを学ぶよい機会のようですが、いつでもデータを失わないことが重要です。IndexedDBデータのエクスポートとインポート

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

+1

ウェブ検査官のようなオプションはありません。 Chromeのインスペクタではデータベースを見ることができますが、多くのデータベースとやり取りすることはできません。 – Bart

+0

そこに運があれば、ユアナ? –

+0

@StevendeSalasまだ - このようなツールがまだ存在しないほど新しくなった可能性が高いと思います。 – JJJ

答えて

0

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

これは、機能の多くを得たが、私たちは、あなたがそれらをしたいものを達成しようとすることができます

セット(キー、値)

$.jStorage.set(key, value) 

ローカルストレージに値を保存します。キーは文字列でなければなりません。それ以外の場合は例外がスローされます。 valueには、オブジェクトや配列、XMLノードなどのJSONeable値を指定できます。 現在、XMLノードは他のオブジェクト内にネストすることはできません。$ .jStorage.set( "xml"、xml_node)はOKですが、$ .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"] 

、すでにDBに設定している考えると、あなたはvar index = $.jStorage.index();を使用すると、アレイと、アレイとコールの各キーを取得するjQueryの.each()ループを作成することができます$.jStorage.get(key)をgetして大きな文字列に追加すると、最後には.csv、またはXMLまたはjson(あなたが選択する)として解析することができます。

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

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

DBをまだお持ちでない場合は、新しいデータベースに$.jStorage.set(key, value)を入力してください。 :)

+2

これは質問自体には答えませんが、根本的な問題の解決策を提供します。 – JJJ

+0

今日-1を追加した人(なぜ答えが投稿されてから2年後)に、なぜdownvotedと言うのが楽しいでしょうか。 – RaphaelDDL

+3

1年後私はあなたの質問に答えることができました、おそらく私はdownvotingを考慮したのと同じ理由であった:それはちょうどすでに述べたJuhanaの質問に答えていません –

1

解決策の上にJavascriptを少し書くと、posted hereになることがありますが、IndexDBを習得する機会を逃してしまいます。

実際にIndexDBを学習したい場合は、インポート/エクスポートツールを自分で作成することができます。将来的に必要なものがあると思います。

5

pure IndexedDB specにはこのようなものはありませんが、これを達成する独自の方法を作成することは可能です。データをインポートする

基本的な手順は、経由(

  • ループあなたのオブジェクトを通してインデックスを追加
  • オブジェクトストアを作成して、一つずつを追加するのIndexedDBデータベース
  • を開く

    1. にありますaddまたはput操作)

    オブジェクトストアをエクスポートするには、次の操作を実行します。 :

    1. 左の結合としてゼロでカーソルを開き、各ティック
    2. でイネーブルに行をプッシュ各成功コールバック上行値
    3. を捕捉するために、要求オブジェクトにonsuccessコールバックを追加します配列var

    最終行では、カーソルがそのすべてのレコードを排出しており、実行されたときに把握するために見ることができる状態である、nullを放出します。その場合、オブジェクトストアのバックアップを表すオブジェクトの特権配列を渡すエクスポートコールバックを呼び出すことができます。

  • +3

    経験から、私は編集者の反応がそれを行う唯一の方法だと言うことができます。また、必要なすべての非同期プログラミングで非常に巧妙でなければならないことに注意してください。すべてのデータがダンプされるキャッシュオブジェクトを持つことをお勧めします。 –

    +1

    私はモジュール[indexeddb-export-import](https://github.com/Polarisation/indexeddb-export-import)を書いています。これは基本的にこの答えで説明されています。 –

    関連する問題