2014-09-30 66 views
0

我是一位刚刚开始使用datastage(来自一些SSIS经验)的新开发人员。我正在做的第一件事情之一是将XML数据流从MQ处理到数据库中。我连接到MQ,使用XML作业将标签映射到每个数据库列,然后将其插入到数据库中。但是,我遇到了传入xml的问题。我处理的每个xml文件中的一个字段包含相同的字符序列,这些字符序列沿着“& $!0”行。XML中的字符无效Datastage作业

当我运行我的工作时,我收到一个错误,说这是一个非法的xml字符,并且作业失败。

datastage中有一种方法可以在xml中替换此值,甚至可以将其删除吗?在我的工作中应该使用一个特定的工具吗?

显然,最简单的解决方案是修复数据进入,但是在平均时间内,我希望能够做一些测试,所以现在替代解决方案会很好。

任何意见将不胜感激。我是一位新开发人员,所以我很抱歉如果这个问题有点无知/低级别。

+0

你知道这些数据代表什么吗?删除它可能会导致问题,如果它的有效数据只是在XML中表现不佳。 – dsolimano 2014-09-30 14:18:38

回答

1

使用文本编辑器如记事本++自己删除字符...

自动化,sed的在Linux会做你的工作和sed的窗口可能会在Windows上工作呢!

+0

它实际上不是在数据库负载中失败。它在XML解析部分失败。我想我或多或少想知道如何将它们从那里拿出来。数据阶段中是否有专门的工具可以做到这一点? – user3494110 2014-09-30 13:55:55

1

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

试试下面的代码:

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

注意:您需要找出所有Unicode,并与 “替换他们”(空白)。

您将得到更多的信息here

+0

太棒了!这有助于很多(也感谢你的链接)。然而,我仍然对此感到困惑的部分是:我在datastage中的工作包括我的mq连接器,数据转换器,然后是输入文件的实时“xml”作业,然后我在输出步骤i映射数据库字段,然后转到odbc连接的数据库。由于XML输入步骤中的非法值,作业失败。 但是,在我使用datastage到目前为止的2天内,我还没有看到可以将代码(使用9.1)输入到流中的地方。这是调色板中的特定工具吗? – user3494110 2014-09-30 14:24:05

+0

由于您使用的是ODBC驱动程序,因此我假设您已将SQL Server作为数据库。检查http://www.mssqltips.com/sqlservertip/3119/import-utf8-unicode-special-characters-with-sql-server-integration-services/并查看是否有帮助 – 2014-09-30 14:57:59