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でちゃんとできたか確認。
うまくいきました。
ニコニコ・レーダーも直りました。
参考サイト
sqlite3 でデータエクスポート&インポート – Rails で行こう!