如何使用运行在Java上的Google App Engine将大量数据上传到Google服务器?

3

我无法想出如何绕过10MB上传限制和30秒会话超时将大量数据上传到Google的服务器。我想设计一个应用程序,将我的标准SQL数据推送到Google的服务器。

我可能听起来很天真,但您对我的项目非常有价值。

2个回答

8

目前还没有原生的Java批量加载程序,所以您需要使用Python批量加载程序。该过程如下:

首先,您需要下载Python SDK并解压缩。然后,创建一个空目录,在其中创建一个名为app.yaml的文件,内容如下:

application: yourappid
version: bulkload
runtime: python
api_version: 1

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

现在,从Python SDK运行“appcfg.py update yourdir”,并在提示时输入您的凭据。appcfg将上传您的应用的新版本,这将与主要版本并排运行,并允许您进行批量加载。
现在,要执行实际的批量加载,您需要使用Python Bulkloader。请按照此处的说明操作。您需要了解一些(非常少量)Python知识,但这大部分是复制和粘贴。完成后,可以像本文中描述的那样运行bulkloader,但是需要在命令行中添加“-s bulkload.latest.yourapp.appspot.com”参数,如下所示:
appcfg.py upload_data --config_file=album_loader.py --filename=album_data.csv --kind=Album -s bulkload.latest.yourapp.appspot.com <app-directory>

最后,如果想直接从SQL数据库中加载数据而不是从CSV文件中加载,请按照我的博客文章这里的说明进行操作。


此解决方案已被弃用。新的说明在这里:http://code.google.com/appengine/docs/python/tools/uploadingdata.html - Tim
此外,如果您的 Google 帐户设置了两步验证,则 appcfg.py update yourdir 步骤将无法正常工作。我只是关闭了它作为最简单的解决方案。 - Tim

0

我也想做同样的事情。所以,这是我最天真的概念来实现目标。

Web服务器准备

  1. 创建一个servlet,用于接收上传的数据(例如数据类型为XMLJSON

    (可选)将其存储为Blobstore

  2. 使用JAXB/JSoup和/或GSON解析数据
  3. 动态解释数据结构
  4. 使用Datastore/存储它

客户端上传器准备

  1. 使用本地计算机,创建一个Java/C++/PHP脚本,生成XML/JSON文件并将其存储在本地
  2. 创建一个shell脚本(Linux)或批处理文件(Windows),使用cURL编程方式上传文件。
如果大家有更好的想法,请在下面留言。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接