python - 将大型 CSV 从 Cloud Storage 导入 App Engine Datastore

标签 python csv google-app-engine google-cloud-storage google-cloud-datastore

我有一个很大的 CSV 文件,大约 1 GB,我想在数据存储中创建实体,每行一个实体。

该 CSV 文件当前位于 Google Cloud Storage 中。有没有一种干净的方法可以做到这一点?我可以在网上找到的所有示例似乎都依赖于本地的 CSV 文件,或者看起来它们的扩展性不太好。理想情况下,有一个流式 API 可以让我从 Cloud Storage 中读取足够小的片段,以便对 Datastore 进行更新调用,但我还没有找到类似的东西。

最佳答案

打开 GCS 文件时接收到的缓冲区是流式缓冲区,可以 pickle。但是 GCS 不支持迭代器协议(protocol)来读取 CSV 的行。你必须 write your own wrapper .喜欢:

with gcs.open('/app_default_bucket/csv/example.csv', 'r') as f:
        csv_reader = csv.reader(iter(f.readline, ''))
        for row in csv_reader:
            logging.info(' - '.join(row))

如果您熟悉 blobstore,您可以使用它来使用 blobstore.create_gs_key( "/gs" + <gcs_file_name_here>) 从 GCS 读取大型 CSV . 示例 here

关于python - 将大型 CSV 从 Cloud Storage 导入 App Engine Datastore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949385/

相关文章:

Python Beautifulsoup 表 td 元素

python - 验证电子邮件地址?

python - 高级描述 Pandas

python - 将嵌套字典写入 CSV,将长格式转换为宽格式

sql - 是否可以查询特定值的逗号分隔列?

java - JDK 和 JRE 错误

python - pyqt:如何删除小部件?

python - sort_options 仅在 query_string 不为空时应用?

node.js - 如何使用 NodeJs 实现 Google App 引擎冗余

java - 如何根据特定条件从文本文件中删除一行