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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值