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

导入CSV至BigQuery遇时间戳解析错误,求解决方法

解决BigQuery导入CSV时AM/PM时间格式解析错误的问题

核心原因

BigQuery自动检测schema时,误将12小时制时间里的AM/PM识别为时区标识,导致TIMESTAMP类型解析失败。

解决方案一:先导入为字符串,再转换为TIMESTAMP

这是UI操作下最直接的办法:

  1. 手动定义导入schema
    在导入CSV时,放弃自动检测schema,选择「edit as text」,将SleepDay字段的类型设为STRING,示例schema如下(替换其他字段为你的实际字段):
    [
      {"name": "SleepDay", "type": "STRING"},
      {"name": "其他字段1", "type": "INTEGER"},
      {"name": "其他字段2", "type": "STRING"}
    ]
    
  2. 导入后转换时间格式
    数据导入完成后,执行SQL将字符串转换为标准TIMESTAMP,使用PARSE_TIMESTAMP函数指定12小时制格式:
    SELECT
      PARSE_TIMESTAMP('%m/%d/%Y %I:%M:%S %p', SleepDay) AS SleepDay,
      -- 保留其他字段
      其他字段1,
      其他字段2
    FROM `你的项目ID.你的数据集ID.你的表名`
    
    格式说明:
    • %m/%d/%Y:匹配「月/日/年」格式
    • %I:%M:%S:匹配12小时制的时分秒(01-12)
    • %p:匹配AM/PM标识

解决方案二:使用命令行工具指定时间格式(适合批量操作)

如果用bq命令行工具导入,可以直接指定时间解析格式,无需先转字符串:

  1. 先编写schema文件(比如schema.json),将SleepDay设为TIMESTAMP:
    [
      {"name": "SleepDay", "type": "TIMESTAMP"},
      {"name": "其他字段1", "type": "INTEGER"}
    ]
    
  2. 执行导入命令,通过--time_format参数指定格式:
    bq load --source_format=CSV --time_format='%m/%d/%Y %I:%M:%S %p' \
    你的项目ID:你的数据集ID.你的表名 \
    本地CSV文件路径 \
    schema.json
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:05:36