分享
 
 
 

将数据导出成为文本格式的备份的shell脚本

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

#将数据库中表的内容导出成为一个文本格式的shell脚本

#有两种使用方法(假设这个脚本的名字叫做unload):

# 1.将一个用户中所有的数据库表的内容到出来:

unload userid/passwd[@connection]

# 2.只导出一个表的内容:

# unload userid/passwd[@connection] table_name

#这里要感谢you的帖子,是他让我学会了如何设置sqlplus环境,从而

#将数据库数据分解出来。

#

#我还想写出一个根据数据库中的数据字典的内容自动生成ctl文件的脚本,

#以便于将文本的数据库内容使用sqlldr导入到数据库中

#请各位提示我可能要涉及的数据字典是哪些 :)

#

sep=',' # --分隔符,可以修改成自己想要的分隔符,如''

load_table( ){

rm -f table1.txt

echo " set colsep $sep;

set echo off;

set feedback off;

set heading off;

set pagesize 0;

set linesize 1000;

set numwidth 12;

set termout off;

set trimout on;

set trimspool on;

spool table1.txt;

select table_name from user_tables;

spool off;

" sqlplus $userid >/dev/null

if [ "$?" -ne 0 ] ; then

echo sqlplus $userid error in get table name <"$?">!!

echo please check userid and passwd or database.

exit

fi

if [[ -f table1.txt ]]

then

cat table1.txt grep -v "^SQL>" tr -d ' ' >table.txt

rm -f table1.txt

tables=`cat table.txt`

rm table.txt

else

echo "get table name error"

exit

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

load_table;

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

echo "no table in user $userid"

exit

fi

else

tables=$2

fi

for table in $tables

do

rm -f wk_$table.txt

echo " set colsep $sep;

set echo off;

set feedback off;

set heading off;

set pagesize 0;

set linesize 1000;

set numwidth 12;

set termout off;

set trimout on;

set trimspool on;

spool wk_$table.txt;

select * from $table;

spool off;

" sqlplus $userid >/dev/null

if [ "$?" -ne 0 ] ; then

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

echo please check userid and passwd or database.

exit

fi

if [[ -f wk_$table.txt ]]

then

cat wk_$table.txt grep -v "^SQL>" >$table.txt

sed -e "s/ *$//g" $table.txt >wk_$table.txt

mv wk_$table.txt $table.txt

if [[ `grep "ORA-" $table.txt` = "" ]]; then

echo "unload table $table....\t\t\t\t\t\t ok"

else

cat $table.txt

err="$err $table"

fi

else

echo $0 error

fi

done

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

echo unload complete!

else

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

fi

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有