教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> 备份恢复 >> 将数据导出成为文本格式的备份的shell脚本 RSS订阅
将数据导出成为文本格式的备份的shell脚本
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

  #将数据库中表的内容导出成为一个文本格式的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 "

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

来源:upschool.com.cn
作者:
关键字:备份,shell脚本
发表日期:2007-1-6 0:48:04

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:9i新特性之四缩小非计划当机时间   下一篇:9i新特性之二安全篇


2008-12-2 7:08:22
本文的相类似文章
  • 四款主流杀毒软件病毒库的备份
  • 巧用KV2005的“重装机备份”功能
  • asp对SQL Server 数据库的备份与恢复(实例)
  • MRP净改变 vs Oracle 增量备份
  • rman备份,未用catalog,控制文件丢失的解决(2)
  • rman备份,未用catalog,控制文件丢失的解决(1)
  • 热备份原理分析
  • Oracle 10g RMAN的备份测试
  • linux es3+oracle9i备份规划脚本_修订版
  • 只读表空间的备份和恢复[一]
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com