Python查询Azure Blob存储JSON数据失败排查及表名疑问
问题解决及说明
报错原因与修复
你的错误源于使用了不匹配的格式处理类:DelimitedJsonDialect是专门处理**每行一个独立JSON对象(JSON Lines格式)**的Blob,且无需手动指定delimiter=','(默认按换行符分隔)。根据报错信息,你的Blob应该是标准的JSON数组结构(比如[{"key1":val1}, {"key2":val2}, ...]),此时需要改用JsonDialect,并通过record_path指定数组的根路径。
修复后的代码示例(针对标准JSON数组):
from azure.storage.blob import JsonDialect query_expression = "SELECT COUNT(*) from blobdata" # 配置标准JSON数组的解析规则 input_format = JsonDialect(record_path="$") reader = blob_client.query_blob(query_expression, on_error=on_error, blob_format=input_format) content = reader.readall() print(content)
如果你的Blob确实是每行一个JSON对象的JSON Lines格式,只需删除错误的delimiter=','参数即可:
from azure.storage.blob import DelimitedJsonDialect query_expression = "SELECT COUNT(*) from blobdata" input_format = DelimitedJsonDialect() # 默认按行分隔,无需指定逗号 reader = blob_client.query_blob(query_expression, on_error=on_error, blob_format=input_format) content = reader.readall() print(content)
查询语句的表名说明
查询语句中的表名固定为blobdata,这是Azure Blob存储查询功能的默认虚拟表名,所有Blob内容都会映射到这个表中,无需修改。
内容的提问来源于stack exchange,提问作者Guy Altman
相关产品推荐
相关产品推荐

