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

相關問題