我正在尝试将一些数据插入到已经存在的bigquery表中。但我无法将这些数据放入表中。
我尝试了谷歌(insert_rows)提供的标准示例,但没有成功。我也提到过这一点:,https://github.com/googleapis/google-cloud-python/issues/5539,我也尝试过将这些数据作为元组列表传递,但问题也是一样的。
from google.cloud import bigquery
import datetime
bigquery_client = bigquery.Client()
dataset_ref = bigquery_client.dataset('my_dataset_id')
table_ref = dataset_ref.table('my_destination_table_id')
table = bigquery_client.get_table(table_ref)
rows_to_insert = [
{u'jobName': 'writetobigquery'},
{u'startDatetime': datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')},
{u'jobStatus': 'Success'},
{u'logMessage': 'NA'},
]
errors = bigquery_client.insert_rows(table, rows_to_insert)当我执行这个,我没有得到一个错误,但它没有写任何东西到表中。如果有人提出对我有用的建议,那就太好了。谢谢!
发布于 2019-08-27 15:55:52
在对你的代码做了一些修改之后,我可以让它像预期的那样工作。我将您的行从一个只有一个值的字典列表更改为在一行中包含所有列的字典。我还更改了datetime格式,因为它对BigQuery无效(可以在here中找到有效格式)。因此,以下代码段应该可以很好地工作:
from google.cloud import bigquery
import datetime
bigquery_client = bigquery.Client()
dataset_ref = bigquery_client.dataset('my_dataset_id')
table_ref = dataset_ref.table('my_destination_table_id')
table = bigquery_client.get_table(table_ref)
rows_to_insert = [
{u'jobName': 'writetobigquery',
u'startDatetime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
u'jobStatus': 'Success',
u'logMessage': 'NA'}
]
errors = bigquery_client.insert_rows(table, rows_to_insert)
print "Errors occurred:", errors发布于 2019-08-27 00:10:37
您的行不应该是字典列表吗?我假设您的表模式类似于jobName, startDatetime, jobStatus, logMessage,那么:
rows_to_insert = [
{
u'jobName': 'writetobigquery',
u'startDatetime': datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S'),
u'jobStatus': 'Success',
u'logMessage': 'NA'
}
]
errors = bigquery_client.insert_rows(table, rows_to_insert)https://stackoverflow.com/questions/57658984
复制相似问题