datastore のデータをダウンロード/アップロードする

Google App Engine で開発。第八弾。

GAE python27 です。

データの download(dump)/upload(restore) には bulkloader を使います。

app.yaml にて remote_api の使用を宣言します。

builtins:
- remote_api: on


bulkloader.yaml ファイルを作成します。appcfg.py を使ってひな形を作成できます。

$ cd ANY_DIRECTORY
$ appcfg.py create_bulkloader_config --filename=bulkloader.yaml --url=http://localhost:8080/_ah/remote_api --application=dev~your-application-id APPLICATION_ROOT


上記は開発サーバーにアクセスしていますが、本番サーバーにアクセスする場合には下記のようになります。

$ appcfg.py create_bulkloader_config --filename=bulkloader.yaml --url=http://your-application-id.appspot.com/_ah/remote_api --application=s~your-application-id APPLICATION_ROOT


APPLICATION_ROOT は app.yaml ファイルが置いてあるディレクトリです。--application の指定は High Replication application の場合には s~your-application-id と指定するのだとか。

生成された bulkloader.yaml に設定を記述します。(追記2012.9.8 : class,nameの設定を見直しました。)

transformers:
- kind: SeedKind
  connector: csv
  property_map:
    - property: __key__
      external_name: id
      export_transform: transform.key_id_or_name_as_string
      import_transform: int
    - property: class
      external_name: class
      import_transform: eval
    - property: name
      external_name: name
      import_transform: unicode
    - property: link
      external_name: link
      import_transform: transform.none_if_empty(unicode)
    - property: note
      external_name: note
      import_transform: transform.none_if_empty(unicode)


SeedKind エンティティの定義は http://d.hatena.ne.jp/nosix/20120826/1345987673 を参照してください。PolyModel を使用しています。

download を行います。

$ appcfg.py download_data --config_file=bulkloader.yaml --url=http://your-application-id.appspot.com/_ah/remote_api --kind=SeedKind --filename=SeedKind.csv


下記は生成された SeedKind.csv

note,link,class,id,name
,,"[u'SeedKind', u'Family']",1,イネ


upload を行います。

$ appcfg.py upload_data --config_file=bulkloader.yaml --url=http://sakudama.appspot.com/_ah/remote_api --kind=SeedKind --filename=SeedKind.csv


以上で、download/upload の確認ができました。

参考: