SQLiteでのDB間のテーブルのコピー方法

2,252 views
Skip to first unread message

あんこ

unread,
Dec 6, 2012, 1:23:22 AM12/6/12
to android-g...@googlegroups.com
こんにちわ。
たびたびお世話になっております。

元となるDBがあって、そこから新たに作成したDBに
必要なテーブルだけをコピーしたいのですが、どのように行うのでしょうか?

もしくは、元となるDBをリネームして新DBを作成し、
不要なテーブルを削除する

といった方法も考えたのですが、こちらの「DBをリネームしてコピー」の方法が
イマイチわかりません。。。


(どちらも、DDMSからとかではなく、プログラム上で行いたいと思っています。)


このような処理を行いたい場合、一般的にはどのように行っているのでしょうか?
ご教授頂けたら幸いです。どうぞ、よろしくお願いいたします。

HideCheck

unread,
Dec 6, 2012, 1:35:56 AM12/6/12
to android-g...@googlegroups.com
sqliteはファイルでdbを管理していますので、dbファイルをコピーでできます。
dbファイルは/data/data/パッケージ名/databasesに作られます

2012年12月6日 15:23 あんこ <android.n...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/duoJu3Y2umAJ
> にアクセスしてください。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。

HideCheck

unread,
Dec 6, 2012, 1:45:35 AM12/6/12
to android-g...@googlegroups.com
はやとちりしました。プログラムからですね
データベースのパスは以下で取得できます

getDatabasePath(ファイル名).getPath()



2012年12月6日 15:35 HideCheck <hide...@gmail.com>:

あんこ

unread,
Dec 6, 2012, 2:32:18 AM12/6/12
to android-g...@googlegroups.com
 
はじめまして。
早急なアドバイス、感謝致します。
 
パスは、自分で指定した個所にDBを作成しているので、
なんとか分かっている状況です。
 
そのDBの間でテーブルをコピーする方法はありますでしょうか?
いろいろ探しているのですが、なかなか方法が見つかりません・・・
 
もし、ご存知でしたらよろしくお願いいたします。 

田代透

unread,
Dec 6, 2012, 2:38:16 AM12/6/12
to android-g...@googlegroups.com
sqlite テーブル複製
でググると

SQLの機能で簡単にできますね

java ファイルコピー
といった条件でググってみるのも役に立つかもしれません



2012年12月6日 16:32 あんこ <android.n...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/72gVQjszWt0J にアクセスしてください。

このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。



--
--
Toru Tashiro
toru...@gmail.com

あんこ

unread,
Dec 6, 2012, 3:45:57 AM12/6/12
to android-g...@googlegroups.com
Toru
 
はじめまして。
さっそくのアドバイスに感謝致します。 
 
リンクのページは同一DB内での処理ですよね?
他DB同士だと、構文に何かアレンジが必要なのでしょうか・・・
 
java ファイルコピー
でも調べてみたいと思いますが、
引き続き、アドバイスを頂けるようでしたら、ありがたく存じます。
 
よろしくおねがいします。なかなか、DB操作も難しいですね・・・

杉田敏典

unread,
Dec 6, 2012, 4:31:01 AM12/6/12
to android-g...@googlegroups.com
sqlite attach database で検索してみれば、お探しの情報が見付かると思います。
--
杉田 敏典 on PC
sugi...@gmail.com


2012年12月6日 17:45 あんこ <android.n...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/SLUNqEFllIcJ

ssももんが

unread,
Dec 6, 2012, 11:58:24 AM12/6/12
to android-g...@googlegroups.com
ももんがです。

話の腰を折ってしまってすいません。
何を目的にこの機能を実現させたいのでしょうか?

完全なる感覚論で申し訳ないのですが、テーブルをコピーする手段が最適ではないような気がします。
これまた感覚論ですが、個人的にはDB二重持ちもあまり良い実装ではない気がします。


バックアップ目的であればファイルそのものをコピーすれば良い気がします…。
該当のテーブルだけバックアップしたいということ…?
DB二重持ちにこだわっているように聞こえますが、そうするとSQLiteOpenHelperも2つ必要になる気がします…。
それであれば同一DB内にテーブルを二重持ちにした方が楽な気もします…。




2012年12月6日 18:31 杉田敏典 <sugi...@gmail.com>:

あんこ

unread,
Dec 7, 2012, 4:42:43 AM12/7/12
to android-g...@googlegroups.com
>>杉田様
 
アドバイス、ありがとうございます。
さっそく、検索して調べてみたいと思います!
 
 
>>ももんが様
 
こんばんわ。アドバイス、ありがとうございます!
実は、この後の工程で必要な為、DBの2つ持ちといった形になっているのです。
 
簡単にお話しますと・・・
①既存のDBに設定とデータを登録
②日付が変わっていたら、新たなDBを作成。ただし、設定だけは引き継ぐ。
 
といった感じです。
 
後の工程で使用するツールが、
①と②の別々のDBを利用するといった仕様になってしまっており、2つ持ちにしなければならないのです。。。
 
 
 
Reply all
Reply to author
Forward
0 new messages