back to home
ホームCONITについて業務内容CONIT LABS.採用情報お問い合わせ
  ホーム > CONIT Labs.
■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   
<<前月 2010年09月 次月>>
■NEW ENTRIES■
■CATEGORIES■
■ARCHIVES■
■LINK■
■PROFILE■
■OTHER■
  • RSS 2.0
  • 処理時間 0.203904秒
  • なかのひと

 

弊社ブログは2010年4月26日からURLを変更いたしました。
ブックマークやRSSで登録されている方は、下記URLへ変更願います。
http://www.conit.co.jp/blog/
今後とも宜しくお願い申し上げます。
2010年4月26日 株式会社コニット

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を参考に設定を変えて試してみるのも
よいと思います。

■次回
 アップロードが出来たので次回は、ダウンロードについてお話したいと思います

| http://www.conit.co.jp/labs/index.php?e=323 |
| Google App Engine | 04:05 PM | comments (0) | trackback (0) |










http://www.conit.co.jp/labs/tb.php/323