postgresql – Redshift / Postgres:如何忽略生成错误的行? (json_extract_path_text中的JSON无效)

前端之家收集整理的这篇文章主要介绍了postgresql – Redshift / Postgres:如何忽略生成错误的行? (json_extract_path_text中的JSON无效)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用json_extract_path_text在redshift中运行查询.不幸的是,此数据库列中的某些 JSON条目无效.

怎么了:
查询遇到无效的JSON值时,它会因“JSON解析错误”而停止.

我想要的:忽略该列中包含无效JSON的所有行,但返回可以解析JSON的任何行.

为什么我无法做到我想做的事情:我认为我不理解Redshift / Postgres中的错误处理.应该可以简单地跳过产生错误的任何行,但我尝试输入EXEC sql WHENEVER sqlERROR CONTINUE(基于the Postgres docs)并在sqlERROR处或附近得到“语法错误”.

创建一个python UDF:
create or replace function f_json_ok(js varchar(65535)) 
returns boolean
immutable
as $$
    if js is None: 
        return None

    import json
    try:
        json.loads(js)
        return True
    except:
        return False
$$language plpythonu

像这样使用它:

select *
from schema.table
where 'DesiredValue' = 
    case 
        when f_json_ok(json_column) then json_extract_path_text(json_column,'Key') 
        else 'nope' 
    end
原文链接:https://www.f2er.com/postgresql/192192.html

猜你在找的Postgre SQL相关文章