将JSON上载到Bigquery非特定错误

时间:2018-05-23 08:28:15

标签: python json google-bigquery

我刚刚开始使用python BigQuery API(https://github.com/GoogleCloudPlatform/google-cloud-python/tree/master/bigquery),然后简单地尝试(https://github.com/pydata/pandas-gbq)并意识到pandas-gbq不支持RECORD类型,即没有嵌套字段。 / p>

现在我正在尝试将嵌套数据上传到BigQuery。我设法使用相应的Schema创建表,但是我正在努力上传json数据。

from google.cloud import bigquery
from google.cloud.bigquery import Dataset
from google.cloud.bigquery import LoadJobConfig
from google.cloud.bigquery import SchemaField

SCHEMA = [
    SchemaField('full_name', 'STRING', mode='required'),
    SchemaField('age', 'INTEGER', mode='required'),
    SchemaField('address', 'RECORD', mode='REPEATED', fields=(
        SchemaField('test', 'STRING', mode='NULLABLE'),
        SchemaField('second','STRING', mode='NULLABLE')
    ))
]

table_ref = client.dataset('TestApartments').table('Test2')

table = bigquery.Table(table_ref, schema=SCHEMA)
table = client.create_table(table)

当尝试将非常简单的JSON上传到bigquery时,我得到一个相当模糊的错误

  

400读取数据时出错,错误消息:遇到JSON表   错误太多,放弃了。行数:1;错误:1。请查看   错误流以获取更多详细信息。

除了它让我有点伤心,它放弃我:),显然错误描述并没有真正帮助... 请在下面找到我如何上传JSON和抽样数据的方法。

job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON

with open('testjson.json', 'rb') as source_file:
    job = client.load_table_from_file(
        source_file,
        table_ref,
        location='US',  # Must match the destination dataset location.
        job_config=job_config)  # API request

job.result()  # Waits for table load to complete.

print('Loaded {} rows into {}:{}.'.format(
    job.output_rows, dataset_id, table_id))

这是我的JSON对象

  

" [{' FULL_NAME':'测试''年龄':2'地址':[{& #39;测试':'喜''第二':' HI2'}]}]"

JSON示例会很精彩,因为如果我没有弄错的话,这似乎是上传嵌套数据的唯一方法。

0 个答案:

没有答案