HOME > CONIT Labs.

CONIT Labs.

GAEでのデータアップロード


こんにちは 阿久津です。
第1回 Google App Engineを使ってみよう!!
第2回 GAE Datastoreのデータ取得パフォーマンスを検証!!
今回は、GAEでのデータアップロードについてです。
■データアップロードを使うシーンについて
色々と考えられると思いますが、以下の辺りではないかと・・・
・マスタ的に扱うデータモデルのデータを初期登録する
・他の環境で使用していたデータ(mysql,postgre,oracle,sqlserver,db2等)をGAEに移行する
・バックアップしてあったデータをアップする
・パフォーマンステスト用に大量データを投入する
上記に記載した限りではないですが、色々なシーンで活用できるこの機能は、覚えておいた方が便利だと思います。
GAEでのアップロード機能は、至って簡単なものなので実際試してみることをおすすめします!!
ではでは、以下より実際にデータアップロードするための手順をご紹介します。
■事前準備
・まずは、app.yamlに「remote_api」の設定を行います。

- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin

で、アプリケーションの更新処理を行います。

$ appcfg.py update

■データ準備
今回は、前回から使用しているUserモデルにデータをアップロードすることを考えていますので
awkなどを使って以下の形式のデータを10万行用意してみました。
 サンプル:$awk ‘BEGIN{OFS =”,”; for (i =1; i <= 100000; i++) print("xxx" i,"id" i,"name" i);}' > user.csv
■ローダクラスの作成
以下のようなソースを作成します。(モデルクラスは、インポートするとうまくいかなかったのでこのソースに定義してます。)

from google.appengine.ext import db
from google.appengine.tools import bulkloader
class User(db.Model):
userid=db.StringProperty()
username=db.StringProperty()
class UserLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, ‘User’,
[('key_name', str),
('userid', str),
('username',str),
])
loaders = [IuserLoader]

■実行
$appcfg.py upload_data –config_file=UserLoader.py –filename=user.csv –kind=User .
(最後のドットは、app.yamlが置いてあるディレクトリを指定してます)
■結果
ちょいと処理はかかるものの無事データアップロードが完了しました。
appcfg.py upload_dataには色々とオプションがあるので、google aap engine documentを参考に設定を変えて試してみるのも
よいと思います。
■次回
 アップロードが出来たので次回は、ダウンロードについてお話したいと思います

コメントを残す

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.