Redshift中json_extract_path_text函数JSON解析报错求助
问题描述
此前可正常运行的SQL代码现在抛出JSON解析错误,具体错误信息如下:
SQL错误[XX000]: ERROR: JSON parsing error
详情:
error: JSON parsing error
code: 8001
context: invalid json object false
query: 6047879
location: funcs_json.hpp:127
process: query1_117_6047879 [pid=6614]
使用的SQL代码:
select json_extract_path_text (info,'device_category') as device_category from admin.project
解决建议
- 定位异常数据:错误提示
invalid json object false说明admin.project表的info列存在值为false的记录,而false并非合法JSON对象(JSON对象需以{}包裹)。执行以下SQL找出异常行:
select * from admin.project where info = 'false';
- 修复异常数据:根据业务逻辑修正异常记录,比如将
info列的false替换为合法JSON格式(如空对象'{}',或符合业务要求的完整JSON结构)。 - 优化SQL容错性:若无法立即修复数据,可修改SQL先校验
info是否为合法JSON再提取字段,避免报错:
select case when info is not null and info ~ '^\{.*\}$' then json_extract_path_text(info, 'device_category') else null end as device_category from admin.project;
如果你的数据库支持try_json_extract_path_text函数(部分PostgreSQL扩展或数据仓库提供),也可以用它直接处理,解析失败时返回null而非报错:
select try_json_extract_path_text(info, 'device_category') as device_category from admin.project;
内容的提问来源于stack exchange,提问作者CerealBox
相关产品推荐
相关产品推荐

