gpt4 book ai didi

json - Redshift/Postgres : how can I ignore rows that generate errors?(json_extract_path_text 中的无效 JSON)

转载 作者:行者123 更新时间:2023-11-29 11:16:46 25 4
gpt4 key购买 nike

我尝试在 redshift 中运行查询,我选择使用 json_extract_path_text。遗憾的是,此数据库列中的某些 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

关于json - Redshift/Postgres : how can I ignore rows that generate errors?(json_extract_path_text 中的无效 JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com