Mac OS X 環境の SQLite3 で、Windows の CSV ファイルを DB にインポート。
 
ポイント

  • インポートする CSV の文字コードを UTF-8 に変換しておく必要がある
  • CSV のカラムに合わせて CREATE TABLE しておく必要がある
  • CSV の1行目をスルーしてくれるようなコマンドオプションはない

 
例)

  • インポートする環境の OS は Mac OS X
  • インポートするCSV ./data.csv (Windows 環境からもらった Shift_JIS のファイル)
  • CSV のカラムは、id, item_name, quantity
  • DB は ./shop.db
  • テーブルは items

 
まずは nkf を使って data.csv を UTF-8 に。
 

 
# 一度 EUC-JP、改行コード LF に変換する
$ nkf --unix ./data.csv
# From EUC-JP To UTF-8
$ nkf -w --overwrite ./data.csv
 

 
UTF-8 に変換できた data.csv を shop.db の items テーブルにインポートする。
 

 
# CSV のカラムに合わせて CREATE TABLE
$ sqlite3 ./shop.db "CREATE TABLE items (id, item_name, quantity INTEGER);"
# separator を , に設定して .import を実行
$ sqlite3 -separator ',' ./shop.db '.import ./data.csv items'
# CSV の一行目もインポートしてしまうので、余分なレコードを削除
# この場合、「id」という文字列の id はないものと想定
$ sqlite ./shop.db "DELETE FROM items WHERE id='id';"
 

 
これで Windows の Excel では開くのに物凄く時間がかかるような CSV も SQLステートメントで操作することが可能になる。
 
 
 

§1153 · Posted By · 12月 18, 2013 · Development · Tags: , , , · [Print]