這篇主要紀錄 Java GAE application 開發者如何將 GAE datastore 裡的資料下載回本地端 ,
並且儲存成易讀的格式 (ex: 可以用 excel 開啓的 .csv 格式)的方法
step 1 : 下載 Google App Engine SDK for Python
因此要先到 http://code.google.com/appengine/downloads.html 下載 "Google App Engine SDK in Python" 並解壓縮 , 裡頭有程式可以協助我們進行傳輸工作
( ps : 當然也需要先安裝好 Python 程式語言的解譯器囉!)
step 2 : 修改 web.xml
Java 版的 GAE 提供了一個名 remote_api 的 Servlet 來負責 Server 端的任務
因此我們必須將他 include 進我們的 application , 在 web.xml 中添加以下 code
<servlet>
<servlet-name>remoteapi</servlet-name>
<servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>remoteapi</servlet-name>
<url-pattern>/remote_api</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>remoteapi</web-resource-name>
<url-pattern>/remote_api</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
step 3 : 產生下載格式設定檔
接下來要產生控制下載格式參數的設定檔 (bulkloader.yaml)
輸入以下指令 (假設我的applcation網址為 http://myWebApp.appspot.com)
# appcfg.py create_bulkloader_config --filename=bulkloader.yaml --url=http://myWebApp.appspot.com/remote_api
step 4 : 修改下載格式設定檔參數
打開新產生的 bulkloader.yaml
並找到 transformers: 這個段落 , 會看到類似下面的 code
(kind 後面接的會是你的 application 的資料儲存單位的 class name , 在這個例子裡面是
Message
)
- kind: Message
connector: csv # TODO: Choose a connector here: csv, simplexml, etc...
connector_options:
# TODO: Add connector options here--these are specific to each connector.
property_map:
- property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
- property: text
external_name: text
# Type: String Stats: 34 properties of this type in this kind.
在 connector 後面輸入要轉換的格式, 即完成設定 !
step 5 : 打包資料回本地端
透過 appcfg 執行下載指令 , 必須指明 設定檔 , 輸出檔 , 以及下載對象
appcfg.py download_data --config_file=bulkloader.yaml --filename=test.csv --kind=Message --url=http://myWebApp.appspot.com/remote_api
大功告成 , Google 對 Java developer 真的是差別待遇呀 !
沒有留言:
張貼留言