4

我有一个很大的CSV文件,大小为1 GB,并且想要在数据存储中创建实体,每行一个实体。将云存储中的大型CSV导入到App Engine数据存储中

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

回答

2

当你打开一个GCS文件是流缓冲您收到的缓冲区,可以腌制。但是GCS不支持迭代器协议来读取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)) 

如果你是Blob存储区familiair,你可以用它来使用blobstore.create_gs_key("/gs" + <gcs_file_name_here>)从GCS读取大型CSV的。 示例here

相关问题