2015-11-03 67 views
0

我有數據庫,它有一個實際上攜帶兩個(用「;」分隔的字符串)的屬性。就以下面的例子來看看:水壺:ETL標準化分割字符串字段

這是一個有像這樣的表我的數據庫(來源):

enter image description here

事實上,這似乎一切ok ,但是當你認爲author可以有一個或多個入口。你有這樣的記載:

文件(ID 1,作者 「約翰·馬特;瑪麗騎士」,抽象 「Lorem存有......」 2015年)

所以我打算在數據庫B(目標)做的是這樣的: enter image description here

其中a_id從表Authors是一個外鍵表012引用。

在首先保證我將填補所有的作家(其中有與沒有問題),然後分配作者羣到各自的文件(這是問題),因爲我可以有這種情況

作者(ID 1, 「約翰·馬特」) (ID 2, 「約翰·馬特」) (ID 2, 「瑪麗騎士」)

請注意,id 2將成爲參與上一個示例的插入。

問:

如何這個程序可以使用使用水壺的ETL過程來完成? 這是一個很好的實踐或由「;」分隔的字符串屬性它夠好嗎?

回答

0

如果我理解正確你的問題,你必須具有行像

document (id 1, author "John Matt; Mary Knight", abstract "Lorem ipsum...", year 2015)

數據庫現在,你需要提取多個作者,其被;分開。

PDI爲您提供了一個稱爲的步驟,將行拆分爲。使用分隔符作爲;,您將獲得多個數據分割副本。接下來,您可以使用作者表中的唯一ID。

或者,您也可以使用修改後的Java腳本步驟來拆分行。建議您使用第一步。

希望這會有所幫助:)

+0

我已經做了你的建議。主要問題是如何從groupauthor表中獲取唯一標識並將其放回到數據庫B(目標)的文檔表中,而不是字符串「John Matt; Mary Knight」。 – ePascoal