如何从 GCS 读取 json gzipped 文件并写入表?

Jam*_*ewp 3 python postgresql json gzip google-cloud-storage

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

\n
[{\n\xe2\x80\x9cdate\xe2\x80\x9d: \xe2\x80\x9c2019-03-10T07:00:00.000Z\xe2\x80\x9d,\n\xe2\x80\x9ctype\xe2\x80\x9d: \xe2\x80\x9cchair\xe2\x80\x9d,\n\xe2\x80\x9ctotal\xe2\x80\x9d: 250.0,\n"payment": "cash"\n},{\n\xe2\x80\x9cdate\xe2\x80\x9d: \xe2\x80\x9c2019-03-10T07:00:00.000Z\xe2\x80\x9d,\n\xe2\x80\x9ctype\xe2\x80\x9d: \xe2\x80\x9cshirt\xe2\x80\x9d,\n\xe2\x80\x9ctotal\xe2\x80\x9d: 100.0,\n"payment": "credit card"\n},{\n.\n.\n}]\n
Run Code Online (Sandbox Code Playgroud)\n

以前,我使用 csv 文件做过类似的工作,在该文件中我可以使用download_as_string函数并将其存储在变量中,并用于StringIO将该变量转换为类似文件的对象,并copy_expert()在查询中使用函数(此链接)。

\n

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

\n

Luk*_*ski 5

要读取数据,我会使用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)
Run Code Online (Sandbox Code Playgroud)

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