当bulkloader耗时太长/产生错误时,将CSV数据导入App Engine的最佳方法是什么?

时间:2011-04-22 10:16:19

标签: google-app-engine csv bulkloader

我有一个10 MB的Geolocation数据CSV文件,我昨天尝试上传到我的App Engine数据存储区。我按照说明in this blog post使用了bulkloader / appcfg工具。数据存储表明上传了记录,但是花了几个小时才用完了当天的整个CPU配额。在我实际超出配额之前,这个过程在错误中崩溃了。但不用说,10 MB的数据不需要这么多时间和功率。

那么,是否有其他方法可以将此CSV数据导入我的App Engine数据存储区(对于Java应用程序)。

我看到Ikai Lan发布了一篇关于使用他为此目的创建的映射工具的帖子,但它看起来相当复杂。

相反,如何将CSV上传到Google文档 - 是否有办法将其从那里传输到App Engine数据存储区?

2 个答案:

答案 0 :(得分:1)

我每天通过bulkloader上传100000条记录(20兆)。我玩过的设置: - bulkloader.yaml config:设置为自动生成密钥。 - 在原始csv文件中包含标题行。 - 速度参数设置为最大值(不确定减少是否会减少消耗的cpus)

这些设置会在大约4分钟内烧掉我6.5小时的免费配额 - 但它会加载数据(可能是来自生成索引的')。

appcfg.py upload_data --config_file=bulkloader.yaml  --url=http://yourapp.appspot.com/remote_api --filename=data.csv --kind=yourtablename --bandwidth_limit=999999 --rps_limit=100 --batch_size=50 --http_limit=15

(我使用脚本自动生成此行并使用Autohotkey发送我的凭据。)

答案 1 :(得分:0)

我编写了这个gdata连接器,用于从Google Docs Spreadsheet中提取数据并将其插入数据存储区,但它使用Bulkloader,因此它可以帮助您解决问题之一。

http://code.google.com/p/bulkloader-gdata-connector/source/browse/gdata_connector.py

然而,您可以查看源代码,了解我如何从gdocs中提取数据并创建执行该操作的任务,而不是通过bulkloader。

此外,您可以将文档上传到blobstore,同样创建一个从blobstore读取csv数据并创建实体的任务。 (我认为这比使用gdata feed更容易,更快)