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

GBQ+Python:如何获取表列数据类型及解决SchemaField属性报错

解决Python获取BigQuery表列数据类型的AttributeError问题

我来帮你搞定这个问题!你碰到的AttributeError: 'SchemaField' object has no attribute 'type'错误,核心原因是你用错了SchemaField对象的属性名。

在google-cloud-bigquery官方Python库中,SchemaField对象存储数据类型的属性并不是type,而是field_type。下面是完整的正确实现步骤:

正确代码示例

from google.cloud import bigquery

# 初始化BigQuery客户端(本地已配置认证可直接使用,未配置需指定credentials参数)
client = bigquery.Client()

# 替换成你的项目ID、数据集ID和表名
project_id = "your_project_id"
dataset_id = "your_dataset_id"
table_id = "your_table_id"

# 获取目标表对象
table = client.get_table(f"{project_id}.{dataset_id}.{table_id}")

# 遍历表Schema,提取列名与对应数据类型
column_type_map = {}
for field in table.schema:
    column_type_map[field.name] = field.field_type
    # 如需额外获取字段模式(是否必填、是否可重复),可添加以下代码:
    # print(f"列名: {field.name}, 类型: {field.field_type}, 模式: {field.mode}")

# 输出结果
print("表中所有列的数据类型:")
for col_name, data_type in column_type_map.items():
    print(f"{col_name}: {data_type}")

关键说明

  • 只需要把你之前代码里的field.type替换成field.field_type,就能立即解决这个属性错误。
  • SchemaField还有几个实用属性可以按需使用:
    • field.name:字段的名称
    • field.mode:字段的约束模式,可选值为NULLABLE(可空)、REQUIRED(必填)、REPEATED(可重复,类似数组)
    • field.description:字段的描述信息(如果表结构中设置过的话)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:45:57