BigQuery 字段的类型已从 STRING 更改为 TIMESTAMP
BigQuery field has changed type from STRING to TIMESTAMP
我正在使用 Python API:
将数据导入 BigQuery
import os
from google.cloud import bigquery
from google.cloud.exceptions import BadRequest
import json
from schema import schema
target_project_name = 'project_name'
target_dataset_name = 'dataset_name'
target_table_name = 'table_name'
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = './credentials.json'
dataset_ref = bigquery.dataset.DatasetReference(target_project_name, target_dataset_name)
table_ref = bigquery.table.TableReference(dataset_ref, target_table_name)
job_config = bigquery.LoadJobConfig()
job_config.schema = schema
client = bigquery.Client()
cnt = 0
with open('./data/transformed_v2.json', 'r') as f:
json_list = []
for line in f.readlines():
cnt += 1
if cnt >= 10:
break
json_contents = json.loads(line)
json_list.append(json_contents)
job = client.load_table_from_json(json_list, table_ref)
try:
result = job.result()
except BadRequest as ex:
for err in ex.errors:
print(err)
print(job.errors)
上面代码中提到的schema
包含一个有问题的字段migration_datetime
,定义为bigquery.SchemaField("migration_datetime", "STRING", mode="NULLABLE")
。该字段包含存储在 '%Y-%m-%dT%H:%M:%S' format. The schema in the target table has the
migration_datetimefield specified as
STRING` 中的值。
job.result()
引发错误,指出 Field migration_datetime has changed type from STRING to TIMESTAMP
。为了缓解这种情况,我将 _string
后缀添加到 migration_datetime
列中的值,但错误仍然存在。请问您可能是什么原因?
考虑将 job_config
传递给 load_table_from_json
,例如 here or using client.schema_from_json
我正在使用 Python API:
将数据导入 BigQueryimport os
from google.cloud import bigquery
from google.cloud.exceptions import BadRequest
import json
from schema import schema
target_project_name = 'project_name'
target_dataset_name = 'dataset_name'
target_table_name = 'table_name'
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = './credentials.json'
dataset_ref = bigquery.dataset.DatasetReference(target_project_name, target_dataset_name)
table_ref = bigquery.table.TableReference(dataset_ref, target_table_name)
job_config = bigquery.LoadJobConfig()
job_config.schema = schema
client = bigquery.Client()
cnt = 0
with open('./data/transformed_v2.json', 'r') as f:
json_list = []
for line in f.readlines():
cnt += 1
if cnt >= 10:
break
json_contents = json.loads(line)
json_list.append(json_contents)
job = client.load_table_from_json(json_list, table_ref)
try:
result = job.result()
except BadRequest as ex:
for err in ex.errors:
print(err)
print(job.errors)
上面代码中提到的schema
包含一个有问题的字段migration_datetime
,定义为bigquery.SchemaField("migration_datetime", "STRING", mode="NULLABLE")
。该字段包含存储在 '%Y-%m-%dT%H:%M:%S' format. The schema in the target table has the
migration_datetimefield specified as
STRING` 中的值。
job.result()
引发错误,指出 Field migration_datetime has changed type from STRING to TIMESTAMP
。为了缓解这种情况,我将 _string
后缀添加到 migration_datetime
列中的值,但错误仍然存在。请问您可能是什么原因?
考虑将 job_config
传递给 load_table_from_json
,例如 here or using client.schema_from_json