2013年11月19日火曜日

Google App Engineのデータをエクスポートする方法

iOSのランキングを日々取得しているiOSランキングトラッカーは、無課金のGoole App Engineで動かしていますが、そろそろ容量の上限値1Gに達しそうな勢いです。

収益があるわけでもない、ただの趣味Webサービスに金をかけることも出来ないので、古いデータを外出しする方法を調べてみました。

今回はそのうち、Google App EngineのBigQuery上にあるデータを手元のデスクトップPCにコピーする手順を紹介します。

1. app.yamlを編集する

下記の二行を追加する。

builtins:
- remote_api: on

2. コマンドを実行してアプリケーションを更新する。

<GAEのインストールパス>/appcfg.py update <app-directory>
注: <app-directory>は直下にapp.yamlがおいてあるディレクトリを指定する必要がある。


3. コピーの実行

%><gae-install-dir>/appcfg.py download_data --application=<app-id> --url=http://<appname>.appspot.com/[remote_api_path] --filename=<data-filename>
<app-id>はapp.yamlに定義した"application"の値。
ただし、high-replication datastoreを使ってる場合、appidの先頭にs~をつける必要がある。
例) applicationの値がexampleで、high-replication datastoreを使ってる場合は下記のようになる。
%><gae-install-dir>/appcfg.py download_data --application=s~example --url=http://example.appspot.com/_ah/remote_api --filename=/tmp

補足

どうやら、このコマンド実行もDataStoreのリクエスト制限の対象のようで、OverQutaErrorが出てしまいました。
OverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available.
 このような場合は下記のようにkindを指定したほうがよさそうです。
%><gae-install-dir>/appcfg.py download_data --application=example --kind=<kind> --url=http://example.appspot.com/_ah/remote_api --filename=/tmp

参考文献

データのアップロードとダウンロード

0 件のコメント:

コメントを投稿