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

Pandas DataFrame导入BigQuery失败:时间戳列格式问题

解决Pandas时间戳导入BigQuery的TIMESTAMP格式错误问题

问题原因

你遇到的错误是因为BigQuery自动推断CSV列类型时,无法正确识别Pandas默认生成的Timestamp格式,或者推断过程中模式参数冲突,导致抛出“TIMESTAMP is not a valid value for mode”的报错。

解决方案

方案1:格式化时间戳为BigQuery兼容的字符串

在Pandas生成时间戳时,直接转成BigQuery TIMESTAMP类型支持的RFC3339格式(优先用UTC时区),避免自动推断出错:

# 生成UTC时区的时间戳,格式化为精确到毫秒的字符串
df['CURRENT_TS'] = pd.Timestamp.now(tz='UTC').strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]

这样写入CSV的时间格式完全符合BigQuery要求,导入时无需额外处理就能被正确识别为TIMESTAMP类型。

方案2:显式指定BigQuery表Schema

如果要保留Pandas的Timestamp类型写入CSV,在使用load_table_from_uri时直接定义表结构,强制指定CURRENT_TS列为TIMESTAMP类型:

from google.cloud import bigquery

# 替换为你的实际列名和类型
schema = [
    bigquery.SchemaField("列1", "STRING"),
    bigquery.SchemaField("CURRENT_TS", "TIMESTAMP"),
    # 添加其他列的定义
]

# 配置导入任务
job_config = bigquery.LoadJobConfig(
    schema=schema,
    source_format=bigquery.SourceFormat.CSV,
    skip_leading_rows=1,  # CSV包含表头行时开启
)

# 执行导入
client = bigquery.Client()
load_job = client.load_table_from_uri(
    "gs://你的存储桶路径/目标文件.csv",
    "你的项目ID.数据集ID.目标表ID",
    job_config=job_config
)

# 等待任务完成
load_job.result()

显式指定Schema可以跳过BigQuery的自动类型推断,从根源避免格式识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:10