导出的JSON以错误的格式出现

时间:2017-07-17 06:04:13

标签: python json google-cloud-storage

我正在尝试使用Python脚本从Google Cloud Storage导出JSON格式的表格。当我从BigQuery手动导出表作为JSON时,它以这种格式完成。

{"f0_":5586.2928892104655}

然而,当我使用我的Python脚本下载它时,我会以这种格式接收它。

f0_
5586.2928892104655

这是我用来导出和下载JSON的代码。

def export_data_to_gcs(data, test2, destination):
    bigquery_client = bigquery.Client(data)
    dataset = bigquery_client.dataset('FirebaseArchive')
    table = dataset.table('SumConnectionTime')
    job_name = str(uuid.uuid4())

    job = bigquery_client.extract_table_to_storage(
        job_name, table, 'gs://firebase_results/SumConnectionTime.json')
    job.source_format = 'NEWLINE_DELIMITED_JSON'

    job.begin()

    wait_for_job(job)



def wait_for_job(job):
    while True:
        job.reload()
        if job.state == 'DONE':
            if job.error_result:
                raise RuntimeError(job.errors)
            return
        time.sleep(1)

export_data_to_gcs(data, 'SumConnectionTime', destination)

client = storage.Client(project=data)
bucket = client.get_bucket('firebase_results')
blob = bucket.blob('SumConnectionTime.json')
with open('SumConnectionTime.json', 'w') as file_obj:
    blob.download_to_file(file_obj)

我需要它是我最初收到的格式,因为我正在运行带有返回值的json.load。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我怀疑您的问题是您没有指定要将BigQuery导出到的目标格式。如果您需要JSON,请尝试使用以下代码替换关于source_format的行:

job.destination_format = NEWLINE_DELIMITED_JSON