XML 中的无效字符使 Datastage 作业失败

Posted

技术标签:

【中文标题】XML 中的无效字符使 Datastage 作业失败【英文标题】:Invalid characters in XML fails Datastage job 【发布时间】:2014-11-25 04:20:04 【问题描述】:

我是一名刚开始使用 datastage 的新开发人员(来自 SSIS 的一些经验)。我要做的第一件事就是处理从 MQ 到数据库的 XML 数据流。我连接到 MQ,使用 XML 作业将标签映射到每个 db 列,然后将其插入到 db 中。但是,我遇到了传入 xml 的问题。我处理的每个 xml 文件中的一个字段包含相同的字符序列,类似于 "&$!0" 。

当我运行我的作业时,我收到一条错误消息,指出这是一个非法的 xml 字符并且作业失败。

在 datastage 中是否有办法在通过 xml 时替换这个值,甚至只是删除它?我应该在工作中为此使用特定工具吗?

显然,最简单的解决方案是修复传入的数据,但与此同时,我希望能够进行一些测试,因此替代解决方案现在会很好。

任何建议将不胜感激。我是一名新开发人员,所以如果这个问题有点无知/低级,我深表歉意。

【问题讨论】:

你知道数据代表什么吗?如果它是在您的 XML 中表现不佳的有效数据,则删除它可能会导致问题。 【参考方案1】:

使用notepad++之类的文本编辑器自己删除字符...

为了自动化,Linux 中的 sed 可以完成您的工作,Windows 的 sed 可能也可以在 Windows 上工作!

【讨论】:

它实际上不在数据库负载中失败。它在 XML 解析部分失败。我想我或多或少想知道如何让他们离开那里。数据阶段是否有专门的工具可以做到这一点?【参考方案2】:

这些字符只不过是 Unicode。您需要在插入数据库表之前删除它们。

试试下面的代码:

s = s.replaceAll("\\p&$!0+", "");

注意:您需要找出所有 Unicode 并将它们替换为“”(空白)。

您将获得更多信息here

【讨论】:

太棒了!这很有帮助(也感谢您的链接)。但是,我仍然感到困惑的部分是:我在 datastage 中的工作包括我的 mq 连接器、数据转换器,然后是输入文件的实时“xml”作业,然后我在输出步骤 i映射数据库字段,然后转到连接 odbc 的数据库。由于 XML 的输入步骤中的值非法,作业失败。但是,到目前为止,在我使用 datastage 的 2 天里,我还没有看到可以将代码(使用 9.1)输入到流中的地方。这是调色板中的特定工具吗? 当您使用 ODBC 驱动程序时,我假设您将 SQL Server 作为数据库。检查mssqltips.com/sqlservertip/3119/… 看看是否有帮助

以上是关于XML 中的无效字符使 Datastage 作业失败的主要内容,如果未能解决你的问题,请参考以下文章

清理无效的 xml 字符串,使其成为有效的 xml

DB2 中的 datastage 转换函数的等价物是啥

datastage图形化工具向服务器发送请求失败

datastage lookup报错,求解

如何调优,datastage的瓶颈都包含哪些

DataStage作业的调度一般采用啥工具