如何从GCS读取json gzip压缩文件并写入表

时间:2019-05-19 13:48:17

标签: python json postgresql google-cloud-storage gzipfile

我在Google Cloud Storage的存储桶中存储了带有gzip文件(.json.gz)的json压缩文件,我想在其中读取并复制到postgres表中。我拥有的json.gz文件只是其中没有嵌套对象的json文件,如下所示:

[{
“date”: “2019-03-10T07:00:00.000Z”,
“type”: “chair”,
“total”: 250.0,
"payment": "cash"
},{
“date”: “2019-03-10T07:00:00.000Z”,
“type”: “shirt”,
“total”: 100.0,
"payment": "credit card"
},{
.
.
}]

以前,我对csv文件做了类似的工作,在其中我可以使用download_as_string函数并将其存储在变量中,然后使用StringIO将该变量转换为类似文件的对象并使用{{1 }}与查询(this link)一起使用

那么,如何在GCS中读取json.gz文件并将其写到Python表中?

谢谢

1 个答案:

答案 0 :(得分:2)

要读取数据,我将使用gcsfs,它是GCS的Python接口:

import gcsfs
import gzip
import json

fs = gcsfs.GCSFileSystem(project='my-project')
with fs.open('bucket/path.json.gz') as f:
    gz = gzip.GzipFile(fileobj=f) 
    file_as_string = gz.read()
    your_json = json.loads(file_as_string)

现在您有了json,就可以使用与csv相同的代码。