csv

Drupal で郵便番号データを自動更新するための設定

10数万件ある郵便番号CSVデータを定期的に取得して、Drupalにインポートするための設定。

月末にデータ更新されているので、毎月5日にCSVを取得するようにOSのcronを設定し、月次のDrupal cronで1時間おきに500件ずつインポートして約10日で完了。

コンテンツタイプは作成済みの前提で、以下に設定を記述する。

Feeds設定

コマンドラインで先頭行にCSVヘッダーを追加するテクニック

ヘッダーなしのCSVファイル

$ cat pricelist.csv 
1,ココナッツ,200
2,いちご,300
3,ぶどう,500

CSVテキストファイルの先頭行に、ヘッダーを追加します。

$ sed -i '1iid,name,price' pricelist.csv
$ cat pricelist.csv
id,name,price
1,ココナッツ,200
2,いちご,300
3,ぶどう,500

catコマンドの場合。別ファイルの挿入などに便利です。

CSVコマンドラインツール csvkit

カンマや改行がデータに含まれているCSVファイルの場合、cutやsed,awkコマンドでは処理が困難なので、csvkitをインストールしておくと便利です。cygwin でも動作します。

 

インストール

$ sudo apt-get install python-dev python-pip python-setuptools build-essential
$ sudo pip install csvkit

インストール済みで、アップグレードする場合。

コマンドラインでHTMLをCSV変換する方法

dtとddタグで作成された表形式のデータを、コマンドラインツールでCSV変換します。
$ curl -s http://doramahjong.com/tournament/ | hxnormalize -x | hxselect -s '\n' -c "table.catagoryTable" "dl" | lynx -stdin --dump  | sed -e 's/^\s\+//' | awk 'BEGIN { FS="\n"; RS="" } { print $1 "," $2 "," $3 }'
風花雪月杯,2016年11月22日 18:00:00,107

ページ