【发布时间】:2010-09-13 09:22:11
【问题描述】:
在 Google App Engine 数据存储中创建表(实体)后,我创建了 Web 应用程序并将其部署在 Google App Engine 中。我怀疑是否可以下载实体/数据库?
【问题讨论】:
标签: java google-app-engine google-cloud-datastore
在 Google App Engine 数据存储中创建表(实体)后,我创建了 Web 应用程序并将其部署在 Google App Engine 中。我怀疑是否可以下载实体/数据库?
【问题讨论】:
标签: java google-app-engine google-cloud-datastore
要启用remote_api,请将其添加到您的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>
此线程中的详细信息:http://groups.google.com/group/google-appengine/browse_thread/thread/1bb013cbdd30750b
然后,正如 shay 所说,使用 bulk loader。
(添加为答案而不是评论只是因为 XML 在评论中的格式不正确。)
【讨论】:
我有一个简单的要求,即从基于 GAE Java 的应用程序中转储实体并将它们恢复到本地数据存储。我终于可以按照以下步骤完成了
将 RemoteApiServlet 添加到 web.xml 并部署应用程序
<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>
下载适用于 Python 的 Google App Engine SDK 并解压缩
使用 bulkloader.py 从 GAE 转储数据存储
bulkloader.py --dump --application=s~appid --url=http://appid.appspot.com/remote_api --filename=xyz.dump
--应用程序以 s~appid 的形式给出,即 tilda appid,因为应用程序正在使用 HR 数据存储。对于主/从数据存储,普通的 appid 就可以了。
bulkload.py 将提示输入应用程序的登录凭据。在身份验证时,它会将实体转储到指定的文件中。
使用以下命令恢复
bulkloader.py --restore --application=appid --url=http://127.0.0.1:8888/remote_api --filename=xyz.dump
对于本地凭据,请使用电子邮件管理员和空白密码。即使对于 HRD 本地数据存储,也可以使用普通 appid(s~appid 恢复数据,但无法在开发控制台 - 数据存储查看器中访问实体。我不知道为什么)
转储可以恢复到同一个appid,甚至可以恢复到不同的appid
【讨论】:
是的,使用BulkLoader
【讨论】:
python2.5 appcfg.py download_data -A APP-ID --url http://APP-ID.appspot.com/remote_api --filename=datastore-$(date +%Y%m%d-%H%M).data