Ailliceです。真面目にブログに記録残すようにしますこれからは。
つい先週くらいにMacでcsvからDB作成するスクリプト書いたのですが、それをWindowsでやろうとしたら面倒だったという話。更に言うとsqlite3の”.import”を使うから全てバッチファイルでは済まないわけで、あまりバッチファイルの意味が無いんじゃないかという話。
だからやっぱりコマンドだけ書いておきます。
準備するファイル
インポートするcsvファイル名は「equip_ab.csv」と「equip_list.csv」の2つ。
それぞれのテーブル名は「ab」「list」。
カラムの定義はそれぞれ「equip_ab.sql」と「equip_list.sql」に書いておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
:equip_ab.sql create table ab (_id integer, rad integer, cost integer); :equip_list.sql create table list (_id integer, name, short_name, type, type_num integer, pow integer, arm integer, torp integer, bomb integer, anti_air integer, anti_subm integer, seek integer, hit integer, avo integer, range integer, anti_bomb integer, incep integer, ext integer, imp integer, av_dd integer, av_cl integer, av_clt integer, av_clp integer, av_ca integer, av_cav integer, av_fbb integer, av_bb integer, av_cvl integer, av_cv integer, av_av integer, av_bbv integer, av_ss integer, av_ssv integer, av_lha integer, av_ar integer, av_as integer, av_ao integer ); |
コマンド
上記のファイルがあるディレクトリまで移動して以下のコマンド入力。一度DBを削除しているのは上書きしないため。
1 2 3 4 5 6 7 8 9 10 |
del equip.db sqlite3 equip.db < equip_ab.sql sqlite3 equip.db < equip_list.sql sqlite3 equip.db .separator , .import equip_ab.csv ab .import equip_list.csv list .exit sqlite3 equip.db "delete from ab where _id='_id';" sqlite3 equip.db "delete from list where _id='_id';" |
csvファイルをそのままimportするとカラム名が挿入されるため、最後の2行で削除します。
上から4行と下から2行はバッチファイルに出来るんだけどね。
今まではPupSQLというフリーソフトを使用していましたがこれで必要なくなるかもです。
macだったらgitにpushするまでのシェルスクリプトを書いているから楽なんだけどねえ。