sqlite3でデータをインポートとエクスポートする方法

ニコニコ・レーダーのカテゴリが動作しなくなっていた。原因はDBのATTACHができなくなっていたため。

[SQLiteメモ][perlメモ]SQLiteで一つのコネクションで複数のデータベースファイルを扱うには? – KUMA TYPE

上の記事の方法を使って二つのDBを一つのDBとして扱えるようにATTACHしていたのだがDBIかDBDのバージョンが変わったのかうまくATTACH出来なくなってしまっていた。他にATTACHする方法がわからないのでしょうがなくDBをまとめて一つにすることにした。そもそもなんでDBを分けているのかというと、SQLiteを使っているのでデータベース用のファイルがあんまり大きくなるとパフォーマンスに影響が出そうな気がするのでわざわざ分けている。本来一つにまとまっていたほうが便利なのは言うまでもない。そういうわけでやってみた。

エクスポート

F:\niconico>sqlite3 NICONICO_TAG.DB
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE NICONICO_OBJ_TO_TAG(
        idx                             INTEGER PRIMARY KEY,
        vid                             TEXT    ,
        tag_id                          INTEGER
);
CREATE TABLE NICONICO_TAG(
        tag_id                          INTEGER PRIMARY KEY,
        tag_id2                         INTEGER ,
        tag_name                        TEXT
);
sqlite> .mode tabs NICONICO_TAG
sqlite> .output NICONICO_TAG.txt
sqlite> select * from NICONICO_TAG;
sqlite> .q

>sqlite3 NICONICO_TAG.DB
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .mode tabs NICONICO_OBJ_TO_TAG
sqlite> .output NICONICO_OBJ_TO_TAG.txt
sqlite> select * from NICONICO_OBJ_TO_TAG;
sqlite> .q

F:\niconico>dir
ドライブ F のボリューム ラベルは HOME です
ボリューム シリアル番号は B8F0-EFF0 です

F:\niconico のディレクトリ

2010/12/22 (水)  00:10    <DIR>          .
2010/12/22 (水)  00:10    <DIR>          ..
2010/12/21 (火)  23:41        23,550,976 NICONICO_MOVIE_INFO.DB
2010/12/22 (水)  00:10         3,284,587 NICONICO_OBJ_TO_TAG.txt
2010/12/21 (火)  23:10         8,908,800 NICONICO_TAG.DB
2010/12/22 (水)  00:06         3,345,431 NICONICO_TAG.txt
              12 個のファイル         145,904,915 バイト
               2 個のディレクトリ  157,417,058,304 バイトの空き領域

インポート

F:\niconico>sqlite3 NICONICO_MOVIE_INFO.DB
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .mode tabs NICONICO_OBJ_TO_TAG
sqlite> .import NICONICO_OBJ_TO_TAG.txt NICONICO_OBJ_TO_TAG
sqlite> .mode tabs NICONICO_TAG
sqlite> .import NICONICO_TAG.txt NICONICO_TAG
sqlite> .q

F:\niconico>

SQLiteSpyでちゃんとできたか確認。

20100739

うまくいきました。

ニコニコ・レーダーも直りました。


参考サイト

sqlite3 でデータエクスポート&インポート – Rails で行こう!

タグ : ,