csv

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

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

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

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

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

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

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

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

sedコマンドを使用し、CSVテキストファイルの先頭行にヘッダーを追加して上書きします。

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

catコマンドの場合。別ファイルの挿入などに便利です。 Read more about コマンドラインで先頭行にCSVヘッダーを追加するテクニック

SQLを使用してDrupalのデータをMySQLからCSV出力する方法

データ件数が数万件を超えるなど大量データを扱う場合、phpを経由するViewsやdrushコマンドは負荷が高く出力が困難なので、APIやSQLコマンドを使用します。

ノード情報をCSV出力するためのSQL文 - 都道府県コンテンツタイプの例 Read more about SQLを使用してDrupalのデータをMySQLからCSV出力する方法

pasteコマンドを使用して、複数ファイルを列方向に結合してCSVデータを作成する方法

$ cat >id.txt <<EOF
001
002
007
EOF
$ cat >name.txt <<EOF
okinawa
tokyo
james
EOF
$ cat >color.txt <<EOF
blue
red
gold
EOF
$ paste -d"," id.txt name.txt color.txt | tee list.txt
001,okinawa,blue
002,tokyo,red
007,james,gold Read more about pasteコマンドを使用して、複数ファイルを列方向に結合してCSVデータを作成する方法

フィールドを指定してAPIから取得した都道府県JSONデータを、jqコマンドでラベルをつけてJSONデータとして再出力する方法

curlを使用してDrupalサイトにログイン、Web APIからJSONデータを取得し、jqコマンドで取得フィールドにラベルをつけてJSON形式で出力。 Read more about フィールドを指定してAPIから取得した都道府県JSONデータを、jqコマンドでラベルをつけてJSONデータとして再出力する方法

コマンドラインでCSVの列順を変更する方法

$ cat population.csv
国,首都,人口(2006),id
"日本国","東京","127767944",1
アメリカ合衆国,ワシントン,300007997,2
$ awk -F, '{ print $4 "," $1 "," $2 "," $3 }' population.csv
id,国,首都,人口(2006)
1,"日本国","東京","127767944"
2,アメリカ合衆国,ワシントン,300007997
 Read more about コマンドラインでCSVの列順を変更する方法

Pages