使用go和app引擎的数据存储区导入和解析大型CSV文件

时间:2014-07-27 01:55:59

标签: google-app-engine csv go google-cloud-datastore

本地我能成功(在任务中):

  • 打开csv
  • 扫描每一行(使用Scanner.Scan)
  • 将解析后的CSV行映射到我想要的结构
  • 将结构保存到数据存储区

我看到blobstore has a reader允许我read the value directly using a streaming file-like interface. - 但似乎有32MB的限制。我还看到有一个批量上传工具 - bulk_uploader.py - 但它不会完成我需要的所有数据按摩,而且我想限制写入(并且实际成本)批量插入。

如何在没有从本地存储读取的情况下有效地读取和解析非常大的(500mb +)csv文件?

2 个答案:

答案 0 :(得分:1)

您需要查看以下选项,看看它是否适合您:

  1. 查看较大的文件大小,您应该考虑使用Google Cloud Storage作为文件。您可以使用GCS提供的命令行实用程序将文件上载到存储桶。上传后,您可以直接使用JSON API处理该文件并将其导入数据存储区。请查看以下内容:https://developers.google.com/storage/docs/json_api/v1/json-api-go-samples

  2. 如果这类似于一次性导入大文件,另一个选项可能是启动Google Compute VM,在那里编写应用程序以从GCS读取并通过较小的块将数据传递给运行的服务在App Engine Go中,然后可以接受并保留数据。

答案 1 :(得分:1)

不是我希望的解决方案,但我最终将大文件拆分为32MB,将每个文件上传到blob存储,然后在任务中解析每个文件。

它不是'漂亮。但它比其他选择花费的时间更少。