命令行导入导出Informatica工作流

导入

infa_import.sh内容如下

#!/bin/bash
usage(){
	echo "infa_import.sh -d <local_folder> <user_name> <password>"
	exit 1
}

repository="infa"
domain="Domain_localhost.localdomain"
work_dir="/home/infa/scripts"

_imp_path=$2
_user_name=$3
_password=$4
fail=0
success=0

if [ $1"x" !== "-dx" ];then
	usage
fi

cd $work_dir

pmrep connect -r $repository -d $domain -n $_user_name -x $_password
if [ $? -ne 0 ];then
	echo "can not connect to the informatica repository!"
	exit 1
fi

for file_name in `ls ${_imp_path}/*.XML`
do
	pmrep objectimport -i $file_name -c ${work_dir}/infa_import.ctl >infa_import.log
	if [ $? -eq 0 ];then
		grep "<Error>" infa_import.log
		if [ $? -eq 0 ];then
			echo "$(basename $file_name) fail to import!"
			let fail=$fail+1
		else
			echo "$(basename $file_name) import successfully!"
			rm -rf $file_name
			let success=$success+1
		fi
	else
		echo "$(basename $file_name) fail to import!"
		let fail=$fail+1
	fi
done

echo "$success success;$fail fail"

调用方式:./infa_import.sh -d /home/infa/scripts Administrator Administrator

其中会用到参数文件infa_import.ctl,内容如下

<?XML version="1.0" encoding="UTF-8"?>
<IMPORTPARAMS CHECKIN_AFTER_IMPORT="YES" CHECKIN_COMMENTS="PMREP_IMPORT_TYPEFILTER">
<RESOLVECONFLICT>
<TYPEOBJECT OBJECTTYPENAME="WORKFLOW" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="WORKLET" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SESSION" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="MAPPING" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="MAPPLET" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SOURCE DEFINITION" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="TARGET DEFINITION" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="EXPRESSION" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="FILTER" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="AGGREGATOR" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="RANK" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="NORMALIZER" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="ROUTER" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SEQUENCE" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SORTER" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="UPDATE STRATEGY" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="CUSTOM TRANSFORMATION" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="LOOPUP PROCEDURE" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="TRANSACTION CONTROL" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="STORED PROCEDURE" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="EXTERNAL PROCEDURE" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="JOINER" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SESSIONCONFIG" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="EMAIL" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="COMMAND" RESOLUTION="REPLACE"/>
<TYPEOBJECT OBJECTTYPENAME="SCHEDULER" RESOLUTION="REPLACE"/>
</RESOLVECONFLICT>
</IMPORTPARAMS>

导出

infa_export.sh内容如下

#!/bin/bash
usage(){
echo "infa_export.sh -l <list_file> -d <output_folder> -w/-m/-s/-t <user_name> <password>"
exit 1
}

repository="infa"
domain="Domain_localhost.localdomain"
work_dir="/home/infa/scripts"
_user_name=$6
_password=$7

if [ -z $1 ];then
	usage
else
	while true 
	do
		case $1 in
		-l)
			list_file=$2
			shift 2;;
		-d)
			output_folder=$2
			shift 2;;
		-w)
			object_type="workflow"
			break;;
		-m)
			object_type="mapping"
			break;;
		-s)
			object_type="source"
			break;;
		-t)
			object_type="target"
			break;;
		*)
			if [ -z $1 ];then
				break;
				usage
			else
				echo "INVALID ARGUEMENT $1";
				break;
				usage
			fi;;
		esac
	done
fi

pmrep connect -r $repository -d $domain -n $_user_name -x $_password
if [ $? -ne 0 ];then
	echo "can not connect to the informatica repository!"
	exit 1
fi


fail=0
success=0

while read object_line
do
	object_name=`echo $object_line|awk -F@ '{print $1}'|sed 's/\\r//g'`
	object_folder=`echo $object_line|awk -F@ '{print $2}'|sed 's/\\r//g'`
	pmrep objectexport -o $object_type -n $object_name -m -f $object_folder -s -b -r -u ${output_folder}/${object_name}".XML" >> ${work_dir}/infa_export.log
	
	if [ $? -eq 0 ];then
		let success=$success+1
		echo "${object_name} export success!"
	else
		let fail=$fail+1
		echo "${object_name} export failed!"
	fi
	
done < $list_file
echo "$success success;$fail fail"

调用方式:./infa_export.sh -l infa_export.ctl -d /home/infa/scripts/output -w Administrator Administrator

会用到参数文件infa_export.ctl,参数文件中保存的是需要导入的工作流名称和所在文件夹,内容如下

workflow_name@workflow_folder

查看工作流是否替换成功

SELECT T.MAPPING_NAME, T.IS_VALID, T.LAST_SAVED
  FROM INFA.OPB_MAPPING T
 WHERE T.MAPPING_NAME = 'WORKFLOW_NAME'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值