Lucy’s blog

プログラムで気になったことの覚書

dbfファイルをcsvに変換

国土数値情報からDLしたシェープファイル形式のデータの中にある、

dbfファイルのデータを使いたくて、

これを一気に(全国分だと170ファイルくらい)csvに変換したいときのシェルスクリプトbash)。

少数ファイルだけの処理の場合はExcelでファイル形式をcsvに変更して保存をすれば事足ります。

 

あらかじめ全てのファイル名(今回は1次メッシュ番号)を記載したテキストファイルを作成しておきます。

$head meshNum.txt

3035
3036
3622
3623
3624
3631
3641
3653
3724
3725

 

環境:OSX Sierra

 #!/bin/bash
meshNum="meshNum.txt"
mesh=(`cat ${meshNum} | awk '{print $1}'`)


for meshCode in ${mesh[@]}
  do
    echo ${meshCode};

    #入力ファイル名を取得

    bfile="../DL/L03b-91_${meshCode}_LandUseSubdivisionMesh.dbf";
 
    if [ -e ${bfile} ] ; then  #ファイルが存在するとき実行

  #文字列があって邪魔なときは sed '/mojiretsu/d'で削除

        strings ${bfile} | awk '{for(i=1;i<=NF;i++)print substr($i,1,10)","substr($i,11,14)}' | sort -k1 | sed '/L03/d' > ${meshCode}_tky.csv

    fi
done
echo "done"