I had created web application and d开发者_运维问答eploy it in Google App Engine after I created table(entity) in Google App Engine datastore. My doubt is it possible to download the entity/database?
to enable remote_api
, add this to your web.xml
:
<servlet>
<servlet-name>remote-api</servlet-name>
<servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>remote-api</servlet-name>
<url-pattern>/remote_api</url-pattern>
</servlet-mapping>
details in this thread: http://groups.google.com/group/google-appengine/browse_thread/thread/1bb013cbdd30750b
then, as shay mentioned, use the bulk loader.
(added as an answer instead of a comment only because the XML wouldn't format nicely in a comment.)
I had a simple requirement to dump entities from GAE Java based App and restore them to local datastore. I could finally do it with following steps
Add RemoteApiServlet to web.xml and deploy the app
<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>
Download Google App Engine SDK for Python and unzip
Use bulkloader.py to dump the datastore from GAE
bulkloader.py --dump --application=s~appid --url=http://appid.appspot.com/remote_api --filename=xyz.dump
--application is given as s~appid i.e. s tilda appid as app was using HR datastore. For Master/Slave datasotre plain appid will do.
bulkload.py will prompt for login credentials for app. On authentication it will dump the entities to the file specified.
To restore use following command
bulkloader.py --restore --application=appid --url=http://127.0.0.1:8888/remote_api --filename=xyz.dump
For local credentials use email admin and blank password. Even for HRD local datastore use plain appid (s~appid restores data but entities can't be accessed in Development Console - Datastore viewer. I don't know why)
Dump can be restored to same appid or even to a different appid
Yes, using the BulkLoader
精彩评论