BIEE 12c 批量替換catalog主題名

有的時候,我們需要修改rpd展現層的主題名。雖然改完名稱之後,會自動創建舊名稱的別名,以便不影響現有使用該主題的分析。

但是這樣有的時候還是會有一些小問題,所以完美的解決辦法是同時也將現有分析的主題名一併修改。

如果分析少的話,直接在具體分析的高級頁面修改即可。但是如果分析多了,或者你根本不知道有哪些分析使用了該主題應該怎麼辦呢?


我們可以使用runcat.sh來批量替換catalog對象(不止是分析)的主題名、字段名、表名等。


runcat.sh位於$FMW/user_projects/domains/bi/bitools/bin目錄下

執行./runcat.sh -help可以查看幫助。如果需要查看具體某個命令的幫助,可以

./runcat.sh -cmd replace -help   

replace就是我們此次需要使用的命令,該命令有兩種工作模式:online和offline,區別是offline不受對象權限控制。

replace可以完成文本、主題域、表、字段、公式的替換

示例如下:

./runcat.sh -cmd replace -online http://bjkjy-bi-devbiee01.bjkjy.com:8706/analytics/saw.dll -credentials user.txt -folderFromFile folder.txt -inputFile replaceCmds.xml


user.txt的內容如下:

login=weblogic
pwd=admin123


folder.txt內容如下:

/shared/groups/misc
/shared/groups/_filters

注:你還可以使用-skipFolderFromFile參數來排除某些目錄,具體請參見幫助


replaceCmds.xml的內容如下:

<?xml version="1.0" encoding="utf-8"?>
<actions>
   <action command="textReplace" oldValue="paint" newValue="newPaint" ignoreCase="false"/>
   <action command="renameSubjectArea" oldValue="SnowflakeSales" newValue="NEW SALES" ignoreCase="false"/>
   <action command="renameTable" subjectArea="Paint Exec" oldValue="forecast measures" newValue="NEWFCMEASURES" ignoreCase="true"/>
   <action command="renameColumn" subjectArea="SnowflakeSales" oldValue="CategoryID" newValue="NEW CATID" useRegex="true"/>
   <action command="renameFormula" subjectArea="Paint Exec" oldValue=""Paint Exec".Measures."Year Ago Dollars"" newValue=""Paint Exec".Measures."NEW YAGODOLLARS"" ignoreCase="false"/>
   <action command="renameFormula" subjectArea=""Paint Exec"" oldValue=""Products".Brand" newValue="NEWPRODUCTS."NEW BRAND"" ignoreCase="false"/>
</actions>



執行成功之後會打印替換掉的對象列表。


不過需要注意的是,這個替換不是完全匹配,什麼意思?

舉個例子,比如你有一個主題叫“ABC”你想把他替換成"BI_ABC",你按照上面執行了一次命令,成功替換成"BI_ABC"。

但是你不小心又執行了一次,這次的結果就是會把BI_ABC替換成BI_BI_ABC。因爲只匹配了ABC,而不是整個主題名,所以請注意這一點。


如果想使用全量匹配應該應該怎麼辦?

查看分析的xml文件找到主題域名部分:

subjectArea="&quot;paint&quot;"

可以看到完成的主題名前後有&quot; (引號的轉義符)

那麼,如果我們要實現完全匹配,則需要按如下的方式編寫:

<?xml version="1.0" encoding="utf-8"?>
<actions>
   <action command="renameSubjectArea" oldValue="&quot;paint&quot;" newValue="&quot;newPaint&quot;" ignoreCase="false"/>
</actions>

注意:newValue前後也要添加&quot;


另外,還可以使用正則表達式來進行查找替換,對<action標籤添加useRegex屬性,同時使用正式表達式來描述OLD或者NEW的值。

例如:

replaceCmds.xml中如下:

<?xml version="1.0" encoding="utf-8"?>
<actions>
   <action command="renameSubjectArea" oldValue="paint\d+" newValue="newPaint" ignoreCase="false" useRegex="true"/>
</actions>





最後,11g同樣可以使用runcat.sh


發佈了112 篇原創文章 · 獲贊 18 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章