2013年4月22日月曜日

GAE (Google App Engine) でcsvを一括アップロードする (python)


昔駅データのcsvファイルをGAEで一括アップロードしたことがありましたが、改めて本日csvファイルのアップロードが必要になりましたので、調べながらまたやってみたいと思います。

このデータのアップロードとダウンロードというページに従ってやればいいようです。

よく分からないながら色々やっている状態ですが、気づいた点を記載します。

まず最近のデータストアを使っている場合は、CGIが使えません的なエラーが出ますので、remote_apiの設定については、builtins ディレクティブを利用するパターンになるのではないかと思いました。

あと、IntegerPropertyの場合に、csvデータ側でデータが入っていない場合は、エラーになるので、データを入れるか、StringPropertyにするなどの対応が必要なのではないかと思いました。

あと、blukloader.yamlと、csvファイルの置き場所ですが、GAEのプロジェクトディレクトリが置かれているディレクトリに置く必要があります。プロジェクトディレクトリ内ではありません。

また、どうやら新しいデータストアでのアプッロードやダウンロードはターミナルでのコマンドに変更があるようです。

appcfg.py upload_data --config_file=bulkloader.yaml --url=http://sample.appspot.com/_ah/remote_api --kind=Sampledata --filename=sample.csv
また、db.TextProperty()をデータストアのエンティティで設定している場合、blukloader.yamlの設定で、下記のようにdb.textを設定する必要があります。これがないと、500文字超過の場合にエラーがでます。
 - property: points
      external_name: points
      import_transform: db.Text
その他、本件についての参考になるサイトを列挙します。 googleグループのディスカッション
datastore のデータをダウンロード/アップロードする
googleグループのディスカッション2