天天看點

指令行導入導出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 [email protected] '{print $1}'|sed 's/\\r//g'`
	object_folder=`echo $object_line|awk [email protected] '{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,參數檔案中儲存的是需要導入的工作流名稱和所在檔案夾,内容如下

[email protected]_folder
           

檢視工作流是否替換成功

SELECT T.MAPPING_NAME, T.IS_VALID, T.LAST_SAVED

  FROM INFA.OPB_MAPPING T

 WHERE T.MAPPING_NAME = 'WORKFLOW_NAME'