ここから本文です

2つのSQLiteデータベースを開いて、片方のDBにあるテーブルからもう一方のDBにあ...

とーさんさん

2011/1/815:54:14

2つのSQLiteデータベースを開いて、片方のDBにあるテーブルからもう一方のDBにあるテーブルにデータを転送する方法

コマンドラインによる方法は分かりましたが、PHPでの方法が分かりません。

今はRESULTセットからSQLを組み立てて間接的に転送しています。

select * from dbA.t1 into dbB.t1;

のような書き方で転送する方法はありますか?

転送に限らず、2つのデータベースをまたがってテーブルを結合する方法も併せて知りたいです。

閲覧数:
5,376
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

mzg********さん

2011/1/817:25:42

php でsqliteを利用する場合、最初に、一つ目のデータベースファイルを通常の接続方法で開いて、次に、ATTACHコマンドでsql文を発行し、もう一つのデータベースファイルを開きます。
ATTACH [DATABASE] 'database-filename' AS database-name
http://www.3rd-impact.net/Document/SQLite/Translation/Current/lang_...

もとのデータベース内のtable は、main.tablename でアクセス、追加データベースは、追加時に付けたエイリアス名を使い database-name.tblename として指定します。
table名がかち合わなければ、データベース名は不用とのこと。

転送というか、一方のテーブルデータを他方にinsert なら、以下の構文
INSERT [OR conflict-algorithm] INTO [database-name .] table-name [(column-list)] select-statement

質問した人からのコメント

2011/1/8 18:02:58

抱きしめる ありがとうございます!解決しました!
他の人のためにアタッチの仕方を記載しておきます。
元のDBは"main"固定の装飾子を付けてアクセスします。
(0666は状況に応じて変更してください)

◆全レコードを移送する
$db = new SQLiteDatabase("origin-database-filename",0666,$sqliteerror);
$db->queryExec("attach 'attach-database-filename' as alias_name");
$db->query("insert into alias_name.table select * from main.table);

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる