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

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...