当输入数据有换行符时获取平面文件架构作为 CSV 输出
Get Flat File Schema as CSV output when input data has newlines
考虑我的输入数据如下:
<xmlnode>line1
line2
line3
</xmlnode>
现在,我有一个将输入数据映射到平面文件架构的地图。我将平面文件保存为 CSV。
问题是:如果输入数据有换行符,则 csv 格式已损坏。 'xmlnode' 的内容应该放在一个单独的 csv 列中。
在平面文件架构中是否需要任何设置来处理此问题?
使用如下代码创建一个 functoid:
return input.Replace("\r", "").Replace("\n", " ");
想法是用单个 space 替换任何 \r\n
(并处理没有回车的换行符 return 的情况)。应该可以解决您的问题。
如果这是在您输入的 multiple/all 个节点上经常发生的问题,那么您可以考虑 运行 将其作为整个消息的正则表达式作为映射后的字符串(而不是而不是让每个节点都通过您的脚本 functoid)。
正如 Dan 在评论中建议的那样,在 csv 的一个单元格中使用 \n(新行)保存数据也需要双引号。
您需要在您的平面文件模式中设置 "Wrap Character" 和 "Wrap Character Type" 设置,以便该字段分别引用 (") 和 'Character'。我已经将其用于同样的问题。
注意:架构设置中有 "Default Wrap Character" 和 "Default Wrap Character Type",但 BizTalk 巧妙地将字段类型默认为 "None" 而不是 "Default",因此您仍然有即使您设置了默认值,也可以去更改字段。
考虑我的输入数据如下:
<xmlnode>line1
line2
line3
</xmlnode>
现在,我有一个将输入数据映射到平面文件架构的地图。我将平面文件保存为 CSV。
问题是:如果输入数据有换行符,则 csv 格式已损坏。 'xmlnode' 的内容应该放在一个单独的 csv 列中。
在平面文件架构中是否需要任何设置来处理此问题?
使用如下代码创建一个 functoid:
return input.Replace("\r", "").Replace("\n", " ");
想法是用单个 space 替换任何 \r\n
(并处理没有回车的换行符 return 的情况)。应该可以解决您的问题。
如果这是在您输入的 multiple/all 个节点上经常发生的问题,那么您可以考虑 运行 将其作为整个消息的正则表达式作为映射后的字符串(而不是而不是让每个节点都通过您的脚本 functoid)。
正如 Dan 在评论中建议的那样,在 csv 的一个单元格中使用 \n(新行)保存数据也需要双引号。
您需要在您的平面文件模式中设置 "Wrap Character" 和 "Wrap Character Type" 设置,以便该字段分别引用 (") 和 'Character'。我已经将其用于同样的问题。
注意:架构设置中有 "Default Wrap Character" 和 "Default Wrap Character Type",但 BizTalk 巧妙地将字段类型默认为 "None" 而不是 "Default",因此您仍然有即使您设置了默认值,也可以去更改字段。