Oracle Integration Cloud中CSV交替表头行的跳过方案(FTP与ATP集成)
在OIC Generation 3中处理交替表头的CSV文件
问题1:用JavaScript跳过交替表头行的实现方法
详细操作步骤
- 在现有工作流的「Stage File Action」之后,添加一个「Execute JavaScript」动作。
- 将JavaScript动作的输入源设置为Stage File读取返回的全量行数据,对应变量通常是
$stageFile.readResult.lines。 - 复制以下代码片段到JavaScript编辑器中,代码会自动过滤掉奇数行(对应原文件的第1、3、5...表头行):
// 获取输入的所有行数据 var lines = data.input.lines; var validDataLines = []; // 遍历行,仅保留偶数行(索引从0开始,i%2!==0对应原文件第2、4、6...数据行) for(var i = 0; i < lines.length; i++){ if(i % 2 !== 0){ validDataLines.push(lines[i]); } // 可选:如果表头内容可能变动,改用内容判断替代行号判断 // if(lines[i].indexOf("id;name;age") === -1){ // validDataLines.push(lines[i]); // } } // 返回过滤后的有效数据行 return { "validLines": validDataLines };
- 后续可以将输出的
validLines转换为结构化数据,再传递给ATP适配器做批量插入。
问题2:Stage File或内置组件的更优处理方案
直接用Stage File Action的内置过滤功能,无需额外编写脚本,步骤如下:
- 打开「Stage File Action」的配置界面,找到「Filter Criteria」(过滤条件)配置项。
- 选择「Expression」模式,输入以下任意一种过滤表达式:
- 按行号过滤(推荐,表头固定重复场景):
position() mod 2 = 0
(注:OIC中position()从1开始计数,该表达式会保留第2、4、6...行) - 按内容过滤(适配表头可能有小变动的场景):
not(contains(., 'id;name;age'))
- 按行号过滤(推荐,表头固定重复场景):
- 保存配置后,Stage File Action会直接返回过滤后的有效数据行,后续可直接映射到ATP表字段。
批量导入ATP的后续流程
不管用哪种方案,过滤后的数据都可以通过以下步骤批量写入ATP:
- 添加「Map动作」,将每行的分号分隔数据映射为ATP目标表的字段结构。
- 配置「ATP Adapter」的批量插入操作,将映射后的数据集批量导入数据库。
额外提示
- 50条记录的规模下,两种方案性能无差异,按需选择即可。
- 如果表头存在大小写、空格差异,优先用行号判断的方式更可靠。
内容的提问来源于stack exchange,提问作者sujay777
相关产品推荐
相关产品推荐

