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

Google bigquery 如何使用Python glcoud.bigquery客户端跳过标题行?,google-bigquery,Google Bigquery,我有一个csv格式的每日GCP账单导出文件,其中包含GCP账单详细信息。此导出包含标题行。我已按如下方式设置加载作业(摘要): 此作业产生以下错误: 无法将“开始时间”作为时间戳进行分析。所需格式为YYYY-MM-DD HH:MM[:SS[.SSSSSS]] 此错误意味着它仍在尝试分析标题行,即使我指定了SkiConquenceRows=1。我做错了什么?我无法重现这一点。我以您给出的示例(“2017-02-04T00:00:00-08:00”)为例,在csv文件中添加了3行/时间戳,并将其上载

我有一个csv格式的每日GCP账单导出文件,其中包含GCP账单详细信息。此导出包含标题行。我已按如下方式设置加载作业(摘要):

此作业产生以下错误:

无法将“开始时间”作为时间戳进行分析。所需格式为YYYY-MM-DD HH:MM[:SS[.SSSSSS]]


此错误意味着它仍在尝试分析标题行,即使我指定了SkiConquenceRows=1。我做错了什么?

我无法重现这一点。我以您给出的示例(“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
然后,我运行找到的示例Python脚本,它成功地将文件加载到表中:

将3行加载到时间戳测试中:gcs\U加载测试


我无法重现这一点。我以您给出的示例(“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
然后,我运行找到的示例Python脚本,它成功地将文件加载到表中:

将3行加载到时间戳测试中:gcs\U加载测试


在使用Python SDK时,应该使用
跳过前导行
而不是
跳过行

跳过前导行:读取数据时要跳过的行数(仅限CSV)


参考资料:

在使用Python SDK时,应该使用
跳过前导行
而不是
跳过前导行

跳过前导行:读取数据时要跳过的行数(仅限CSV)


参考资料:

Aha…所以它不是T分隔符。我的错!谢谢你把这件事告诉格雷厄姆,证明我错了。我忽略了错误消息的第一部分指出的真正问题:“无法将‘开始时间’解析为时间戳”。”“开始时间”来自CSV标题行。我已经在脚本中包含了'job.skiningrows=1',但这似乎不起作用。为什么这份工作不跳过标题行呢?注意,我根据格雷厄姆的有用反馈修改了我的原始问题。太好了,所以它是另外一个问题。酷。但是,为了将来的参考,完全编辑原始问题并将其转换为新问题并不是一个好主意,因为我的答案现在完全不相关。最好从原来的问题中衍生出一个新问题,并将这个问题标记为已解决。啊哈…所以它不是T分隔符。我的错!谢谢你把这件事告诉格雷厄姆,证明我错了。我忽略了错误消息的第一部分指出的真正问题:“无法将‘开始时间’解析为时间戳”。”“开始时间”来自CSV标题行。我已经在脚本中包含了'job.skiningrows=1',但这似乎不起作用。为什么这份工作不跳过标题行呢?注意,我根据格雷厄姆的有用反馈修改了我的原始问题。太好了,所以它是另外一个问题。酷。但是,为了将来的参考,完全编辑原始问题并将其转换为新问题并不是一个好主意,因为我的答案现在完全不相关。最好从原来的问题中衍生出一个新问题,并将此问题标记为已解决。
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))