一个把altibase中数据导入到oracle中的脚本
<P>使用iloader生成fmt文件,用sed处理后生成ctl文件,用sqlldr导入到oracle中</P><DIV id=codeText class=codeText>
<OL style="PADDING-BOTTOM: 5px; MARGIN: 0px 1px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px" class=dp-css>
<LI>#!/bin/bash</LI>
<LI></LI>
<LI>#"TB_BIL_ACCT_BALANCE_bak" "RATABLE_HISTORY_bak" </LI>
<LI></LI>
<LI>TABLE_ARRAY=( "tb_bil_rent_arrear" ) #到导入的表的表名</LI>
<LI></LI>
<LI>ALTIBASE_CONN="-s 127.0.0.1 -u test -p test" </LI>
<LI></LI>
<LI>ORACLE_CONN="test/test"</LI>
<LI></LI>
<LI>INPUT_TYPE=1 #2 REPLACE ;other APPEND</LI>
<LI></LI>
<LI>TIME=`date +"%m%d%H%M%S"`</LI>
<LI></LI>
<LI>case ${INPUT_TYPE} in</LI>
<LI></LI>
<LI>1)</LI>
<LI></LI>
<LI>INPUT_TYPE_STR="APPEND"</LI>
<LI></LI>
<LI>;;</LI>
<LI></LI>
<LI>2)</LI>
<LI></LI>
<LI>INPUT_TYPE_STR="REPLACE"</LI>
<LI></LI>
<LI>;;</LI>
<LI></LI>
<LI>*)</LI>
<LI></LI>
<LI>INPUT_TYPE_STR="APPEND"</LI>
<LI></LI>
<LI>;;</LI>
<LI></LI>
<LI>esac</LI>
<LI></LI>
<LI>echo 4</LI>
<LI></LI>
<LI>for NUM in ${!TABLE_ARRAY[@]}</LI>
<LI></LI>
<LI>do</LI>
<LI></LI>
<LI>TABLE_NAME=${TABLE_ARRAY}</LI>
<LI></LI>
<LI>iloader formout ${ALTIBASE_CONN} -T ${TABLE_NAME} -f data.fmt >/dev/null</LI>
<LI></LI>
<LI>if [ $? -gt 0 ] ; then</LI>
<LI></LI>
<LI>echo "iloader formout error!"</LI>
<LI></LI>
<LI>exit</LI>
<LI></LI>
<LI>fi</LI>
<LI></LI>
<LI>iloader out ${ALTIBASE_CONN} -f data.fmt -d data.dat >/dev/null</LI>
<LI></LI>
<LI>if [ $? -gt 0 ] ; then</LI>
<LI></LI>
<LI>echo "iloader out error!"</LI>
<LI></LI>
<LI>exit</LI>
<LI></LI>
<LI>fi</LI>
<LI></LI>
<LI></LI>
<LI></LI>
<LI>echo "LOAD DATA" > data.ctl</LI>
<LI></LI>
<LI>echo "INTO TABLE ${TABLE_NAME}" >> data.ctl</LI>
<LI></LI>
<LI>echo "${INPUT_TYPE_STR}" >> data.ctl</LI>
<LI></LI>
<LI>echo "FIELDS TERMINATED BY X'5E'" >> data.ctl</LI>
<LI></LI>
<LI>echo 'TRAILING NULLCOLS' >> data.ctl</LI>
<LI></LI>
<LI>echo "(" >> data.ctl</LI>
<LI></LI>
<LI>sed -n '/{/,/}/{p;}' data.fmt | tail +2 | sed '$d;'|sed 's/bigint/integer/;s/numeric/integer/;s/integer[^;]*/integer external/;s/varchar/char/;s/date/date "YYYY\/MM\/DD HH24:MI:SS"/;s/;/,/;$s/,//;' >> data.ctl</LI>
<LI></LI>
<LI>echo ")" >> data.ctl</LI>
<LI></LI>
<LI></LI>
<LI></LI>
<LI>sqlldr userid=${ORACLE_CONN} control=data.ctl "log=${TABLE_NAME}_${TIME}.log" "bad=${TABLE_NAME}_${TIME}.bad" data=data.dat >/dev/null</LI>
<LI></LI>
<LI></LI>
<LI></LI>
<LI>if [ $? -gt 0 ] ; then</LI>
<LI></LI>
<LI>echo "sqlldr error!"</LI>
<LI></LI>
<LI>exit</LI>
<LI></LI>
<LI>fi </LI>
<LI></LI>
<LI>done</LI>
<LI></LI>
<LI>echo "load over!"</LI></OL></DIV>
页:
[1]