You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python转换CSV时间格式适配BigQuery的DATETIME类型要求

问题根因

BigQuery DATETIME 类型默认仅识别YYYY-MM-DD HH:MM:SS格式的时间字符串,你当前CSV内的时间格式和标准要求不匹配,所以触发Invalid DateTime string报错。你给出的Schema配置bigquery.SchemaField("DATE", "DATETIME", mode="REQUIRED")本身没有问题,只需要提前把源数据的时间字段做格式转换即可。
注意你描述中写的时间格式为DD:MM:YY HH:MM,和你给出的实际报错样例"21.03.22 22:02"的点分隔格式存在出入,下面代码默认按你提供的真实报错样例做解析,如果实际分隔符是冒号,调整格式匹配串即可。

处理步骤
  • 先通过Python读取原始CSV文件,不要直接上传未处理的源文件
  • 按原始时间格式解析DATE列的字符串,统一转换为BigQuery兼容的YYYY-MM-DD HH:MM:SS格式,自动补全缺失的秒位为00
  • 导出处理后的新CSV文件,再用原有Schema配置上传即可
可直接运行的代码

首先安装需要的依赖:
pip install pandas

处理脚本:

import pandas as pd
from datetime import datetime

# 替换为你的原始CSV文件路径
raw_df = pd.read_csv("your_raw_data.csv")

def format_for_bq(datetime_str):
    # 按样例格式DD.MM.YY HH:MM解析,若原格式是冒号分隔,把下面字符串里的.换成:即可
    parsed_time = datetime.strptime(datetime_str.strip(), "%d.%m.%y %H:%M")
    # 输出BigQuery支持的标准格式
    return parsed_time.strftime("%Y-%m-%d %H:%M:%S")

# 转换DATE列
raw_df["DATE"] = raw_df["DATE"].apply(format_for_bq)

# 导出处理后的文件,关闭索引写入避免生成多余列
raw_df.to_csv("bq_ready_data.csv", index=False)
注意事项

因为你给DATE字段设置了REQUIRED模式,上传前务必检查该列是否存在空值、无法解析的异常时间字符串,否则还是会触发上传报错。可以在format_for_bq函数中增加try-except逻辑提前排查脏数据。

处理完成后,直接上传生成的bq_ready_data.csv即可,不需要修改原有BigQuery表的Schema配置。

内容的提问来源于stack exchange,提问作者Osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:42:23