サーバ上のdatastoreをローカル開発サーバにリストアする
サーバのデータをローカル開発サーバ上にリストアする方法。
自身のアプリケーションIDを APP_ID とします。
appcfg.py download_data --application=`APP_ID` --url=http://APP_ID.appspot.com/_ah/remote_api --filename=hoge.dump --email=Googleアカウントのメールアドレス
これで、サーバ側のデータが hoge.dump というファイル名で保存されます。
上記例では、全カインドをダウンロードしますが、
--kind=カインド名
のオプションを付与する事により、指定したカインドだけをダウンロードできます。
ここでポイントは、--application=に指定するAPP_IDを、バッククオートで囲むこと。APP_IDに記号が含まれている場合、バッククオートで囲まないと、次のようなエラーになります。
google.appengine.api.datastore\erros.BadRequestError: app s~APP_ID cannot access app APP_ID's data
次に、ダウンロードしたものを、ローカルにリストアします。
ローカル開発サーバを起動した状態としたうえで、次のコマンドでリストアを実行。
appcfg.py upload_data --application=dev~APP_ID --url=http://localhost:ポート番号/_ah/remote_api --filename=hoge.dump --email=Googleアカウントのメールアドレス
ここでのポイントは2つ。
1つめは、ポート番号はAdmin Portではなく、通常のアプリケーションのポートのほうであるということ。
2つめは、applicationIDの指定の仕方。頭に"dev~"を付与することと、ダウンロードの時とは違い、APP_IDに記号が含まれていても、バッククオートで囲まずともエラーにはなりませんでした。