SQLite – 異なるDB間でテーブルをコピー

By ctrans | 2011-08-31

データベース 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:\sql\new.db
2    old              c:\sql\old.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

  1. table1の構造はどちらも同じとする []
web拍手

Leave Your Comment

Your email will not be published or shared.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">