ほぼ一日中会議で終わった。
エクセルのデータをsqlite3に取り込むのに大苦戦。まだ、細かな点は分からなことだらけだが、最低限のことができるようになったのでメモ。
こんな感じのエクセルデータがあるとする。
「CSV(カンマ区切り)」で保存する。今回は「mushi.csv」として保存。
ここからは理由は良く分からないが、こうやったら上手くいった手順ということで。
「テキストエディット」でcsvファイルを開き、「別名で保存」から「Unicode(UTF-8)」で保存する。ファイル名は好きにして良いが、今回は「mushi.csv」のまま。
このcsvファイルを「TextWrangler」で開き、「Save as」から「Line breaks」を「Unix (LF)」に変更して「Save」する。
ターミナルを開き、
$ sqlite3 mushi.db; #mushi.dbというデータベースを作成
sqlite> create table mushi_table(id integer primary key, site text, animal text); #mushi.dbの中にmushi_tableというテーブルを作成
sqlite> .separator , #区切り文字を「,」に指定
sqlite> .import mushi.csv mushi_table #mushi.csvをmushi_tableに入れる
sqlite> select * from mushi_table; #mushi_tableを表示する
で、mushi.csvファイルが、mushi.dbのmushi_tableに取り込まれたことが分かる。
「テキストエディット」と「TextWrangler」の流れは、後者で一回でできるのだが、そのやり方だとナゼか日本語が文字化けする。
これだけのことにかなり苦戦したのだが、最も苦労したのが、「Line breaks」を「Unix (LF)」にするところ。
デフォルトでは「Classic Mac (CR)」になっており、このまま同じ作業を実行すると
expected 3 columns but found 11 - extras ignored
と列の数が上手く認識されない。LFとかCRは改行の指定らしのだが、、、全く理解できていないが、とりあえずということで。