暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle JSON_QUERY和JSON_VALUE不能处理超过10万个字符

askTom 2018-01-23
515

问题描述

JSON_QUERY和JSON_VALUE不能处理超过10万个字符。我有一个大报告 (大小可以随时更改),并将其作为JSON推送到oracle并在那里解析。我得到JSON语法错误,可能是因为JSON被截断为4000个字节。Oracle JSON功能不适合这样的大数据吗?请帮助汤姆!

PL/SQL代码看起来像:

V_JSON_DATA CLOB; -- Converted from BLOB,which comes as function parameter
V_SQL CLOB;

V_SQL := 'SELECT JSON_QUERY('''' || V_JSON_DATA || ''',''$.' || KEY || ''') FROM DUAL';
EXECUTE IMMEDIATE V_SQL;
复制


专家解答

你需要更具体地说明你在做什么。

这个例子与一个包含100,009个字符的JSON文档工作得很好:

declare
  jdoc clob;
  res  varchar2(200);
begin
  dbms_lob.createtemporary(jdoc,true);
  
  jdoc := '{"v0": 0';
  for i in 1 .. 1000 loop
    dbms_lob.writeappend(jdoc,100,', "v' || i || '": "' || rpad('x', 90, 'x') || '"');
  end loop;
  dbms_lob.writeappend(jdoc,1,'}');
  
  select json_query(jdoc, '$.v1' returning varchar2 with wrapper)
  into   res
  from   dual;
  
  dbms_output.put_line(dbms_lob.getlength(jdoc) || '; ' || res);
  
  dbms_lob.freetemporary(jdoc);
end;
/

100009; ["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论