dir="/cpic/cpicapp/east" dmdir="/cpic/cpicapp/dm3/bin" cd $dir if [ $# -ne 1 ];then cat << EOF Usage: $0 dirname dirname EOF exit 1 fi dirname=$1 list=`ls ${dirname}/*.txt` for line in $list ##cat table.list|while read line do filename=${line#*/} tabname="EAST_"${filename%-*} echo $tabname ##将表名转换为小写 c_tabname=`echo "${tabname}"|tr [A-Z] [a-z]` ##c_tabname=`echo "${tabname}"` echo $c_tabname result=`${dmdir}/disql ****/'"********"'@*******:***** << ! set heading off set feedback off set pagesize 0 set verify off set echo off set lineshow off SET TIMING off select '|'||trim(LISTAGG(column_name,',')within group(order by column_id))||'|' from (select column_name||'#'||case when data_type in('CHAR','VARCHAR2','NVARCHAR2','VARCHAR','TEXT') AND DATA_LENGTH > 255 THEN 'CHAR(8000)' ELSE '' END column_name,column_id from user_tab_columns ta where table_name = upper('${tabname}')); exit !` echo $result>clumns01.txt result2=`cut -d$'|' -f2 clumns01.txt` echo $result2>clumns01.txt sed s/[[:space:]]//g clumns01.txt>clumns.txt sed -i 's/#/ /g' clumns.txt ##拼装control文件 echo "load data">tmp.ctl echo "infile '${dir}/import20250630/${filename}'">>tmp.ctl ##echo "infile '${dir}/import20250228/${c_tabname}.txt'">>tmp.ctl echo "badfile '${dir}/bad/${c_tabname}.bad'">>tmp.ctl echo "into table ${c_tabname}">>tmp.ctl echo "fields terminated by ' '" >> tmp.ctl ##echo "fields ' '">>tmp.ctl echo "(">>tmp.ctl cat clumns.txt>>tmp.ctl echo ")">>tmp.ctl ${dmdir}/dmfldr userid=****/'"*********"'@********:***** control=\'${dir}/tmp.ctl\' null_mode=true done