网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle企业管理器应用参考.
.Mandrake9.0的启动过程(从init开.
.联合国开发计划署采用甲骨文方案.
.如何在linux环境下启动时打开num.
.有关网格环境下的数据库系统的探.
.Oracle 10G Beta版在Win2000上安.
.Oracle 10G 的新特性.
.Oracle数据字典.
.ORACLE UPDATE 语句语法与性能分.
.将数据库访问集成到 Linux 应用中.
.怎样制作可执行的java程序.
.sql loader的用法.
.oracle 每个用户 ip访问限制 开发.
.显示数据库中所有表及其信息.
.Oracle DBA数据库日常维护完全手.
.数据仓库离我们到底有多远?.
.Oracle 9i的备份和恢复机制.
.Oracle学习手册:Oracle游标使用.
.Oracle数据库的热备份与完整恢复.
.Oracle Enterprise Manager常见问.

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

发表日期:2008-2-9


由于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.sh userid/passwd[@connection][table_name] userid/passwd[@oracle_sid]--登录数据库的信息 tablename --卸载的表名[可选]
举例说明: dbschema.sh test/test@testdb 逐个处理该用户的表,在当前目录中生成test.sql脚本。 dbschema.sh test/test@testdb TT 处理test用户的tt表,在当前目录中生成tt.sql脚本。 脚本说明:
#!/usr/bin/ksh ####################################################### # # 模块: dbschema.sh # # 描述: 根据一个数据库或表名来获取相应的结构脚本 # # 参数 1 = 用户名/密码[@实例名] # 参数 2 = 表名/视图名(可选) # # 作者 Bing He # # 修改记录 # 日期 修改人 修改描述 # # 10/20/2003 Bing He 开始编写 # ###################################################### ###################################################### ##-- 局部变量定义 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/null set echo off; set heading off; desc user_tables; exit ! if [ "$?" -ne 0 ] then echo "Error:f_check_userid failed." echo " Please check the username/passwd=[${lv_loginfo}]." exit fi } ################################################ ################################################ ##-- 检查表是否存在 f_check_tablename() { sqlplus ${lv_loginfo} < /dev/null set echo off; set heading off; spool ${lv_file_temp1} select count(*) from user_tables where table_name='${lv_table_name}'; spool off exit ! if [ "$?" -ne 0 ] then echo "Error:f_check_tablename failed." echo " Please check the [${lv_table_name}]." exit fi lv_number=`cat ${lv_file_temp1}grep -v "^SQL>" grep -v "^$"grep -v "rows selected` if [ ${lv_number} -eq 0 ] then echo "Error:f_check_tablenaem failed." echo " Please check the table [${lv_table_name}] in [${lv_loginfo}]." exit fi } ################################################ ################################################ ##-- 初始化输出文件 f_generate_file() { if [ ${lv_argc} -eq 1 ] then lv_str=`echo ${lv_loginfo}cut -d"/" -f1 tr "[:upper:]" "[:lower:]"` lv_str_main="StrUCture For User ${lv_str}" else lv_str=`echo ${lv_table_name} tr "[:upper:]" "[:lower:]"` lv_str_main="Structure For Table ${lv_str}" fi lv_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:Bing He" >> ${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/null set colsep ${lv_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 ${lv_file_temp1}; select table_name from user_tables; spool off; exit ! if [ "$?" -ne 0 ] ; then echo "Usage:f_get_tables failed." exit fi if [ -f ${lv_file_temp1} ] then lv_table_name=`cat ${lv_file_temp1} grep -v "^SQL>" tr -d ' ' tr "[:lower:]" "[:upper:]"` echo ${lv_table_name} > 1.out else echo "Error:f_get_tables failed.${lv_file_temp1} file not found!" exit fi rm -f ${lv_file_temp1} } #################

上一篇:如何把应用程序和Oracle客户端一起打包 人气:813
下一篇:Oracle数据库中每月工作日计算代码分析 人气:868
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐