我有一个csv格式的每日GCP结算导出文件,其中包含GCP结算详细信息。此导出包含标题行。我按如下方式设置了一个加载作业(摘要):
from google.cloud import bigquery
job = client.load_table_from_storage(job_name, dest_table, source_gs_file)
job.source_format = 'CSV'
job.skipLeadingRows=1
job.begin()
此作业产生错误:
无法将“开始时间”解析为时间戳。所需格式为YYYY-MM-DD HH:MM [:SS [.SSSSSS]]
此错误表示即使我指定了skipLeadingRows = 1,它仍在尝试解析标题行。我在这里做错了什么?
答案 0 :(得分:0)
我无法重现这一点。我拿了你给出的例子(" 2017-02-04T00:00:00-08:00"),在csv文件中添加了3行/时间戳,将其上传到GCS,最后创建了一个空表在BigQuery中,有一列TIMESTAMP
类型。
文件内容:
2017-02-04T00:00:00-08:00
2017-02-03T00:00:00-08:00
2017-02-02T00:00:00-08:00
然后我运行了找到here的示例Python脚本,并成功将文件加载到表中:
将3行加载到timestamp_test:gcs_load_test。
def load_data_from_gcs(dataset_name, table_name, source):
bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)
job_name = str(uuid.uuid4())
job = bigquery_client.load_table_from_storage(job_name, table, source)
job.begin()
wait_for_job(job)
print('Loaded {} rows into {}:{}.'.format(job.output_rows, dataset_name, table_name))
答案 1 :(得分:0)
在使用Python SDK时,您应该使用skip_leading_rows
而不是skipLeadingRows
。
skip_leading_rows:读取数据时要跳过的行数(仅CSV)。
参考:https://googleapis.dev/python/bigquery/latest/generated/google.cloud.bigquery.job.LoadJobConfig.html