postgresql – Redshift / Postgres:如何忽略生成错误的行? (j
发布时间:2020-12-13 16:19:16 所属栏目:百科 来源:网络整理
导读:我正在尝试使用json_extract_path_text在redshift中运行查询.不幸的是,此数据库列中的某些 JSON条目无效. 怎么了: 当查询遇到无效的JSON值时,它会因“JSON解析错误”而停止. 我想要的:忽略该列中包含无效JSON的所有行,但返回可以解析JSON的任何行. 为什么
我正在尝试使用json_extract_path_text在redshift中运行查询.不幸的是,此数据库列中的某些
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |