Sqliteデータの移行

アプリ内Sqliteデータ移行のための最良の方法は何ですか?私はiPhone開発に慣れていないので、私はSqliteを使って自分のアプリケーションを作成しました。懸念を助けてください

1
データベースをどこに移行させたいのですか?
追加された 著者 Parth Bhatt,
@ ankit.tlp:これは私の答えです。既に使用しているユーザーのために古いDBからのデータをそのまま保持し、新しい変更も含めます。変更はドン・スルー・クエリーになります。詳細については私の答えを参照してください。
追加された 著者 Parth Bhatt,
以前のバージョンのテーブルを古いバージョンから削除したいのですか?単に、既に新しいバージョンをダウンロードして、新しいバージョンのアプリケーションを使用しているユーザーが必要ですか?
追加された 著者 Ravin,
私はApp Storeで自分のアプリケーションのバージョンを更新したいので、新しいバージョンでは新しいテーブルを持つことができるので、ユーザーデータを移行する必要があります。
追加された 著者 ankit.tlp,
アプリケーションの機能が強化されているので、古いDBから新しいDBにデータを持ちたいだけでなく、いくつかの新しいテーブルがあります。
追加された 著者 ankit.tlp,

1 答え

データベースアップグレードプロシージャを作成し、アプリケーションの起動時に初めて実行させるようにします。

これにより、初めてアプリケーションをロードするときにcreateステートメントによって新しいテーブルが作成されます。

また、ユーザーの現在のデータベースに保存されているすべてのデータを保存するのに役立ちます。これは、既存のデータベースをどこにでも移行するための追加要件がないため、最も推奨される方法です。

また、このリンクの私の答えを参照してください:

Don't wan't to replacing the old database when app is updated

これがあなたを助けることを願っています

もっと助けが必要な場合は、私に連絡してください。

編集:

いくつかのデータを含む既存のテーブルを変更する必要がある場合は、次のようにいくつかの手順を実行する必要があります。

1)既存のテーブルの名前を変更する

テーブル名が 'TestTable'だったので、テーブルの名前を 'TestTableOld'に変更します

2) 'TestTable'という名前の新しいテーブルを作成します。新しいテーブルには、あなたが望む新しいカラムと他の変更があります。

3) 'TestTableOld'から 'TestTable'に次のようなクエリを使用してデータをコピーします。

TestTable( 'col1'、col2 '...' coln ')に値を挿入します。col1、col2、col3、...' coln 'を選択します。

4)テーブル 'TestTableOld'を削除します。

上記の4つの手順を実行すると、これはalter文として機能し、元のテーブルのすべてのデータを保持します。

あなたがそれを得ることを願っています。

3
追加された
それはあなたがするべき方法ではありません。あなたは "バージョン"と呼ばれるテーブルを作成する必要があり、テーブルにあなたのアプリケーションのバージョン番号を提供する必要があります。その後、あなたはそれを行うことができます。
追加された 著者 Parth Bhatt,
いいえ、これのための実例がありますが、私はいくつかの場所を実装しました。アップグレード・プロシージャでは、データベースでSELECT文の問合せを実行するのとまったく同じ方法で、「テーブルの作成」ステートメントおよび「更新ステートメント」および「ステートメントの挿入」などの文をプログラムで実行するだけです。
追加された 著者 Parth Bhatt,
いいえ、私は自分のプロジェクトの多くでそれを実装していますが、これについてはチュートリアルのリンクはありません。
追加された 著者 Parth Bhatt,
どういたしまして :)。このバージョンでは、バージョン番号の代わりにNSUserDefaultsフラグ値を使用して実行できます。しかし、将来の使用に役立つように、このバージョンのアップグレードにバージョンテーブルを含めてください。
追加された 著者 Parth Bhatt,
はい正しいです。私はあなたにそのための道を与えます。私に5分を与えてください
追加された 著者 Parth Bhatt,
自分の回答の編集セクションを確認してください。それは、あなたの疑義に答えるための変更ステートメントに答えます。
追加された 著者 Parth Bhatt,
私の最初のDBはないので、私はいくつかの検索で見つけたuser_versionを使用しています。これは、DBバージョンのためにこれを参照してください DBバージョンのテーブル。さらに私はあなたが提案したものが最良の選択肢だと考えていますが、今のところ、私が試みたのは上記のものです。
追加された 著者 ankit.tlp,
DBからuser_versionを使用してデータベースのバージョンをチェックしようとしています。私のOLD DBに変更を加えた後に新しいDBのバージョンを作成しましたが、通常はsqliteの文を準備してuser_versionを更新しようとしていますが、この点で私を助けることができますか?
追加された 著者 ankit.tlp,
ありがとう、私はこれをヒットしようとします。もう1つの質問があります。現在、私のデータベースにDBバージョンに関する情報はありません。次に、アプリケーションの更新中にDBバージョンをテストする方法はありますか?
追加された 著者 ankit.tlp,
つまり、ドキュメントディレクトリにデータベースがある場合、データベースバージョンを確認し、バージョンが更新されたAppデータベースと異なる場合は、プログラムでデータベースを変更する必要があります。しかし、私はすでにそれにいくつかのデータを持っているテーブルを変更する必要がある場合、私はsqliteのドキュメントからsqliteがテーブルの変更を変更することをサポートしていないことを読む。
追加された 著者 ankit.tlp,
はい、私はあなたのリンクを参考にしています。
追加された 著者 ankit.tlp,
先生、私はこの分野では非常に新しいので、そうする作業例があります。
追加された 著者 ankit.tlp,
従来のデータを移行するには、アプリがアップグレードされるたびにテーブルスキーマの変更がある場合は、新しいSQLスクリプト/ステートメントを作成する必要があります。したがって、私が想定しているデータを移行する共通のスクリプトはありません。ありがとう
追加された 著者 Satyam Raikar,