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
相关产品推荐
相关产品推荐

