データベース new.dbのテーブル table1に別のデータベースold.dbのテーブルtable1のデータを丸ごとコピーしたい場合1、SQLiteではnew.dbを開いた後、ATTACH DATABASE でold.dbをアタッチすることでスムーズに処理することができた。各table1はDB名を接頭辞としてmain.table1、old.table1という風にしてアクセスする。後はINSERT文を発行するだけだが、PRIMARY KEYが指定されている列をINSERTしようとするとエラーが発生するので列名を指定する必要があった。最後はDETACH DATABASEして処理完了である。
c:sql>sqlite3.exe new.db
sqlite> ATTACH DATABASE 'old.db' AS old;
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main c:sqlnew.db
2 old c:sqlold.db
sqlite> BEGIN;
sqlite> INSERT INTO main.table1(c1,c2,c3) SELECT c1,c2,c3 FROM old.table1;
sqlite> COMMIT;
sqlite> DETACH DATABASE old;
関連:SQLite Query Language: ATTACH DATABASE
- table1の構造はどちらも同じとする [↩]