如何在Oracle数据库中存储JSON数组 仅通过IICS转换实现
IICS JSON数组字段完整写入Varchar2字段解决方案
问题根因
Hierarchy Parser默认处理数组类型字段时会将数组元素扁平化展开为多行数据,未做聚合处理的场景下,写入目标表时仅会保留最后一行的数组元素值,因此出现仅存储数组最后一位内容的问题。
实现步骤(仅使用IICS原生转换,无需编码)
方案1(优先使用,流程更简单)
- 调整Hierarchy Parser配置:打开Hierarchy Parser转换的设置页,找到
label数组对应的解析规则,将输出模式设置为保留数组结构,不要开启数组扁平化展开选项。 - 新增Expression转换:在Hierarchy Parser后接入Expression转换,使用IICS原生数组函数将数组拼接为字符串,示例写法如下:
如需逗号分隔的纯内容输出:
如需保留原始JSON数组的方括号格式:out_label = ARRAY_TO_STRING(label, ',')out_label = '[' || ARRAY_TO_STRING(label, ',') || ']' - 字段映射:将Expression转换输出的
out_label字段映射到目标表的varchar2类型label字段即可。
方案2(适配低版本IICS无ARRAY_TO_STRING函数的场景)
- 调整Hierarchy Parser配置:开启
label数组的扁平化展开,配置为每个数组元素输出一行,同时保留每条源数据的唯一主键ID用于后续分组。 - 新增Aggregator转换:按源数据主键ID分组,调用原生聚合函数拼接所有label元素:
out_label = STRING_AGG(label, ',') - 字段映射:将Aggregator输出的
out_label字段映射到目标表对应字段即可。
内容的提问来源于stack exchange,提问作者Aniruddha Gayake
相关产品推荐
相关产品推荐

