我在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表中?
谢谢
答案 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相同的代码。