如何从GCS读取经gzip压缩的JSON文件并写入表格?

3

我有一个使用gzip压缩的json文件(.json.gz),存储在Google Cloud Storage的存储桶中,我想要读取并将其复制到PostgreSQL表中。我拥有的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将该变量转换为类似于文件的对象,并使用copy_expert()函数与查询一起使用(这个链接)。

那么,我怎样才能使用Python读取GCS中的json.gz文件并将其写入表格中呢?

1个回答

5

要读取数据,我建议使用gcsfs,它是一个Python接口,可访问GCS:

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相同的代码。


谢谢你的回答。顺便问一下,是否有其他方式可以使用官方的谷歌云客户端库,比如在这个链接中的示例,而不是使用gcsfs? - emp
@Jamiewp 当然,这个在我看来是最Pythonic的。如果您的问题已解决,请接受答案并点赞,如果您觉得慷慨的话 :)。 - Lukasz Tracewski
目前我还没有尝试过,但明天会尝试。 - emp
我使用了read()和json.loads()进行修改,并能够将其打印出来,但当尝试插入数据时,出错了,哈哈。 - emp
没错,我会找到将其插入表中的方法。 - emp
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接