分享
 
 
 

将Oracle数据库中某张表的内容导出成文本格式文件

王朝oracle·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

#!/bin/ksh

#############################################################################

#功能:

# 将数据库中某张表的内容导出成为一个文本格式,每条记录一行

#配置:

# 参见当前目录下unload.ctl文件

#用法:

# sqlunldr userid/passwd[@connection] table_name

#注意:

# 如果表中某域为char(n),包含\n,\r等将会造成导出的数据行数比实际记录数多

#

#############################################################################

getConfig()

{

if [ -f "./unload.ctl" ];then

. ./unload.ctl

echo "Begin reading unload.ctl."

echo =============================

echo "sep=$sep"

echo "fields=$fields"

#`echo $fields|sed -e "s/ //g" `

echo "destDir=$destDir"

echo "where=$where "

echo "order=$order "

echo =============================

echo "Reading unload.ctl complete."

echo ""

return 0

else

return 1

fi

}

getConfig

if [ $? -ne 0 ];then

echo "Error: Can not find unload.ctl file.Please check it!"

exit 1

fi

if [ "X$1" = "X" ];

then

echo "Usage: $0 <userid/passwd@connection> <table_name>"

# exit

echo \c "Userid:"

read userid1

echo \c "Passwd:"

echo off

read passwd

userid=$userid1$passwd

echo on

else

userid=$1

fi

if [ "X$2" = "X" ]; then

echo "No table in user $userid."

echo "Usage: $0 <userid/passwd@connection> <table_name>"

exit

else

table=$2

fi

#selectSql=`echo "select $fields from $table" |sed -e "s/,/||\',\'||/g"`

#echo selectSql=$selectSql

echo "Begin to unload... please wait..."

sqlplus $userid <<! >/dev/null

set COLSEP $sep;

set echo off;

set heading off ;

set feedback off;

set pagesize 0 ;

set linesize 1000;

set termout off;

set trimout on;

set trimspool on;

spool wk_${table}.txt;

select $fields from $table $where $order;

spool off;

/

exit

/

!

if [ "$?" -ne 0 ] ;

then

echo "Error:sqlplus $userid error in unload table $table!! "

echo "Please check userid and passwd or database."

exit

fi

cat wk_${table}.txt | sed -e '/^SQL>/d' -e '/^$/d' >$table.txt

if [[ `grep "ORA\-" ${table}.txt` = "" ]];

then

cat $table.txt|sed -e 's/[[:space:]]//g'>wk_${table}.txt

else

cat $table.txt

err="$table"

fi

if [[ "X$err" = "X" ]];then

echo "Unload table $table complete! "

else

echo "Unload table $err error, please check it!"

exit

fi

echo "Check the correctness..."

cnt1=`sqlplus $userid<<! >/dev/null

set echo off;

set heading off ;

set feedback off;

set pagesize 0 ;

set termout off;

set trimout on;

set trimspool on;

spool cnt1.txt;

select count(*) from $table $where;

spool off;

exit;

/

<<! `

cnt1=`cat cnt1.txt|sed -e '/^SQL>/d' -e '/^$/d' -e 's/ //g' `

cnt2=`wc -l ${table}.txt |awk '{print($1)}'`

#echo "\$cnt1=$cnt1"

#echo "\$cnt2=$cnt2"

echo "表中记录=$cnt1 条,生成的文件行数=$cnt2 ."

if [ $cnt1 -eq $cnt2 ];

then

echo "Congratulations,unload successful!"

else

echo "Error:导出记录数与表中记录数不等,请检查表中是否有类型为char(n)的某个域的数据含有\n."

fi

mv wk_$table.txt $table.txt

rm -f cnt1.txt

############****************************************配置文件

#file:unload.ctl

#分隔符

sep=","

#输出字段,不能有空格连接;如果有空格需将=右边用""引起

fields="ORG_BIND_ACC_NBR,ACCT_MONTH_ID,ACCT_CYCLE_TMPL_ID,ACCT_CYCLE_ID,PARTITION_ID,SOURCE_TYPE,BUSINESS_KEY,CALL_TYPE,ORG_ACC_NBR_A,ORG_ACC_NBR_B,START_DATE,START_TIME,CALL_DURATION,END_DATE,END_TIME,TOTAL_METER_VALUE,PURE_METER_VALUE,SWITCH_AREA_CODE,SWITCH_ID,ORG_FILE_NAME,CDR_POS_IN_FILE,TRUNK_IN,TRUNK_OUT,CARD_NO,CARD_TYPE,IS_PREFEE,ORG_FEE1+ORG_FEE2+ORG_FEE3 ORG_FEE,VISIT_AREA_CODE_A,SWITCH_TYPE,BILLING_TYPE,OPER_SEQUENCE"

#条件,没有条件为空

where="where ACCT_MONTH_ID>='200410'"

#排序字段,没有条件为空

order= #"order by start_date"

#输出文件存放目录

destDir=.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有