我正在尝试使用json_extract_path_text在redshift中运行查询.不幸的是,此数据库列中的某些
JSON条目无效.
怎么了:
当查询遇到无效的JSON值时,它会因“JSON解析错误”而停止.
我想要的:忽略该列中包含无效JSON的所有行,但返回可以解析JSON的任何行.
为什么我无法做到我想做的事情:我认为我不理解Redshift / Postgres中的错误处理.应该可以简单地跳过产生错误的任何行,但我尝试输入EXEC sql WHENEVER sqlERROR CONTINUE(基于the Postgres docs)并在sqlERROR处或附近得到“语法错误”.
创建一个python UDF:
原文链接:https://www.f2er.com/postgresql/192192.htmlcreate 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