2014-09-30 44 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