您当前的位置: 首页 > 数据库教程 > Oracle教程 > Unix环境卸载Oracle表结构文本中的脚本

Unix环境卸载Oracle表结构文本中的脚本

作者:guanchaofeng 来源:不详 发布时间: 2009-07-10 18:35 点击:
由于Oracle的EXP不能转为文本,所以就自己写了Unix环境下卸载Oracle表结构文本中的脚本代码。 所涉及系统表 1.User_tables用户表。 2.User_tab_columns用户表的字段。 3.User_view用户视图。 4.User_indexes用户表的索引。 5.User_ind_columns用户表字段的索

Unix环境卸载Oracle表结构文本中的脚本

  由于Oracle的EXP不能转为文本,所以就自己写了Unix环境下卸载Oracle表结构文本中的脚本代码。
  
  所涉及系统表
  
  1.User_tables用户表。
  
  2.User_tab_columns用户表的字段。
  
  3.User_view用户视图。
  
  4.User_indexes用户表的索引。
  
  5.User_ind_columns用户表字段的索引。
  
  6.User_constraints用户表的限定。
  
  7.User_cons_columns用户表字段的限定。
  
  使用方法
  
  dbschema.sh
  
  功能:
  
  根据一个数据库或表名来卸载结构,并在当前目录中生成对应的数据结构文件,包含表结构、主键、外键、索引等。
  
  语法:
  
  dbschema.shuserid/passwd[@connection][table_name]userid/passwd[@oracle_sid]--登录数据库的信息tablename--卸载的表名[可选]
  
  举例说明:
  
  dbschema.shtest/test@testdb
  
  逐个处理该用户的表,在当前目录中生成test.sql脚本。
  
  dbschema.shtest/test@testdbTT
  
  处理test用户的tt表,在当前目录中生成tt.sql脚本。
  
  脚本说明:
  
  #!/usr/bin/ksh#########################################################模块:dbschema.sh##描述:根据一个数据库或表名来获取相应的结构脚本##参数1=用户名/密码[@实例名]#参数2=表名/视图名(可选)##作者BingHe##修改记录#日期修改人修改描述##10/20/2003BingHe开始编写###############################################################################################################--局部变量定义lv_argc=0#命令行入参个数lv_loginfo=""#命令行中的登录信息lv_table_name=""#命令行中的表名信息lv_filename=""#输出的文件名lv_tab_number=0#需要处理的表的个数lv_sep='|'#分隔符lv_grid_str="\t"#输出的距行首的空格lv_deal_table=""#当前处理的表lv_file_temp1="get_ddl.temp1"#临时文件名lv_file_temp2="get_ddl.temp2"#临时文件名lv_file_temp3="get_ddl.temp3"#临时文件名lv_file_tab_col="get_ddl.col1"#临时文件名lv_file_tab_con="get_ddl.con1"#临时文件名lv_file_col_con="get_ddl.con2"#临时文件名lv_file_tab_ind="get_ddl.ind1"#临时文件名lv_file_col_ind="get_ddl.ind2"#临时文件名##########################################################################################################--检查用户名密码的权限f_check_userid(){sqlplus${lv_loginfo}</dev/nullsetechooff;setheadingoff;descuser_tables;exit!if["$?"-ne0]thenecho"Error:f_check_useridfailed."echo"Pleasechecktheusername/passwd=[${lv_loginfo}]."exitfi}##################################################################################################--检查表是否存在f_check_tablename(){sqlplus${lv_loginfo}</dev/nullsetechooff;setheadingoff;spool${lv_file_temp1}selectcount(*)fromuser_tableswheretable_name='${lv_table_name}';spooloffexit!if["$?"-ne0]thenecho"Error:f_check_tablenamefailed."echo"Pleasecheckthe[${lv_table_name}]."exitfilv_number=`cat${lv_file_temp1}|grep-v"^SQL>"|grep-v"^$"|grep-v"rowsselected`if[${lv_number}-eq0]thenecho"Error:f_check_tablenaemfailed."echo"Pleasecheckthetable[${lv_table_name}]in[${lv_loginfo}]."exitfi}##################################################################################################--初始化输出文件f_generate_file(){if[${lv_argc}-eq1]thenlv_str=`echo${lv_loginfo}|cut-d"/"-f1|tr"[:upper:]""[:lower:]"`lv_str_main="StructureForUser${lv_str}"elselv_str=`echo${lv_table_name}|tr"[:upper:]""[:lower:]"`lv_str_main="StructureForTable${lv_str}"filv_filename_drop_index="${lv_str}.drop_index"lv_filename_drop_foreign="${lv_str}.drop_foreign"lv_filename_drop_table="${lv_str}.drop_table"lv_filename_create_table="${lv_str}.create_table"lv_filename_create_foreign="${lv_str}.create_foreign"lv_filename="${lv_str}.sql"rm-f${lv_filename_drop_index}rm-f${lv_filename_drop_foreign}rm-f${lv_filename_drop_table}rm-f${lv_filename_create_table}rm-f${lv_filename_create_foreign}rm-f${lv_filename}##--生成基础数据lv_str1="-------------------------------------"echo"\n"${lv_str1}>>${lv_filename_drop_index}echo"--**第一步:删除索引**--">>${lv_filename_drop_index}echo${lv_str1}"\n">>${lv_filename_drop_index}lv_str1="--------------------------------------"echo"\n"${lv_str1}>>${lv_filename_drop_foreign}echo"--**第二步:删除外键**--">>${lv_filename_drop_foreign}echo${lv_str1}"\n">>${lv_filename_drop_foreign}lv_str1="---------------------------------------"echo"\n"${lv_str1}>>${lv_filename_drop_table}echo"--**第三步:删除表**--">>${lv_filename_drop_table}echo${lv_str1}"\n">>${lv_filename_drop_table}lv_str1="---------------------------------------"echo"\n"${lv_str1}>>${lv_filename_create_table}echo"--**第四步:创建表结构,主键,索引**--">>${lv_filename_create_table}echo${lv_str1}>>${lv_filename_create_table}lv_str1="---------------------------------------"echo"\n"${lv_str1}>>${lv_filename_create_foreign}echo"--**第五步:创建外键**--">>${lv_filename_create_foreign}echo${lv_str1}"\n">>${lv_filename_create_foreign}lv_str1="---------------------------------------"echo"\n"${lv_str1}>>${lv_filename}echo"--**DESC:${lv_str_main}">>${lv_filename}echo"--**AUTHOR:BingHe">>${lv_filename}echo"--**DATE:20`date+%y-%m-%d">>${lv_filename}echo${lv_str1}"\n">>${lv_filename}}####################################################################################--获取用户下的表列表f_get_tables(){rm-f${lv_file_temp1}sqlplus${lv_loginfo}</dev/nullsetcolsep${lv_sep};setechooff;setfeedbackoff;setheadingoff;setpagesize0;setlinesize1000;setnumwidth12;settermoutoff;settrimouton;settrimspoolon;spool${lv_file_temp1};selecttable_namefromuser_tables;spooloff;exit!if["$?"-ne0];thenecho"Usage:f_get_tablesfailed."exitfiif[-f${lv_file_temp1}]thenlv_table_name=`cat${lv_file_temp1}|grep-v"^SQL>"|tr-d''|tr"[:lower:]""[:upper:]"`echo${lv_table_name}>1.outelseecho"Error:f_get_tablesfailed.${lv_file_temp1}filenotfound!"exitfirm-f${lv_file_temp1}}#################

分享到:
本文"Unix环境卸载Oracle表结构文本中的脚本"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4