如何使用Python glcoud.bigquery客户端跳过标题行?

时间:2017-02-08 08:16:12

标签: google-bigquery

我有一个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,它仍在尝试解析标题行。我在这里做错了什么?

2 个答案:

答案 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))

enter image description here

答案 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