You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中是否有替代XML Parser的HTML Parser解析CLOB格式HTML表格

Oracle解析HTML表格报错的解决方案

你遇到的ORA-06502/ORA-06512报错,是因为XML解析器要求输入必须为严格良构的XML文档,但普通HTML存在大量不闭合标签、无引号属性、未转义实体等不符合XML规范的语法,所以直接将HTML内容转换为XMLType会有概率失败。以下是两种可行的替代方案:

方案1:正则匹配提取(适合结构简单的规则表格)

如果你的HTML表格没有嵌套标签、td内容不含</>特殊字符,可以直接用正则匹配跳过XML解析直接提取内容,示例代码如下:

with raw_data as (
    select ROW_ID, NOTE as html_content
    from MY_Table
    where EVENT='note'
),
split_tr as (
    select 
        ROW_ID,
        level as tr_order,
        regexp_substr(html_content, '<tr[^>]*>(.*?)</tr>', 1, level, 'i', 1) as tr_content
    from raw_data
    connect by level <= regexp_count(html_content, '<tr[^>]*>', 1, 'i')
        and prior ROW_ID = ROW_ID
        and prior sys_guid() is not null
),
extract_td as (
    select
        ROW_ID,
        tr_order,
        regexp_substr(tr_content, '<td[^>]*>(.*?)</td>', 1, 1, 'i', 1) as first_td_content
    from split_tr
    where tr_content is not null
)
select 
    ROW_ID,
    listagg(first_td_content, '|') within group (order by tr_order) as Data
from extract_td
where first_td_content is not null
group by ROW_ID;

该方案实现简单、性能高,仅适用于表格结构固定的场景。

方案2:Java存储过程封装HTML解析器(通用复杂场景)

如果HTML结构复杂、存在大量非良构语法,推荐封装开源HTML解析器为Oracle自定义函数,步骤如下:

  • 下载成熟的HTML解析器jar包,使用loadjava工具将jar包上传到Oracle实例,授予对应执行权限
  • 编写Java静态方法实现HTML表格解析逻辑,编译后创建PL/SQL包装函数
  • 直接调用自定义函数解析CLOB类型的HTML内容即可

该方案可以兼容所有标准HTML语法,是生产环境处理复杂HTML的最优解,性能可满足绝大多数业务场景的需求。

内容的提问来源于stack exchange,提问作者Rajesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 02:57:02