导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等

导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等

导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等
前言:
  这是我用很长时间才写的存储包,其间经历了多次修改,以适应多种情况,今将其贡献出来,如果能读懂这个存储包,恭喜你,你的oracle知识已经达到一定程度了,而且这不失为一个学习oracle存储过程的模板,掌握它之后你可以自如的写存储包,存储过程,和函数了。

  在我的实际工作中我发现它的功能很强,可以生成我们常用的对象的创建语句,这在很多情况下比较好用
1。想导出创建用户下的对象的sql语句。
2。有时我们用copy命令与create table as .... 命令在2个数据库之间建立一个用户的所有数据的拷贝时,只能拷贝数据,而如各个约束,索引则不能导过来,此时,该脚本生成的sql语句正好可以弥补这一缺点。

不好意思独享该脚本,共享出来,忘大家共同进步。

版权所有人: 徐玉金

备注:用户可以根据实际需要修改、使用、发布该脚本,但是不能修改版权所有人


适用的数据库:8i, 9i数据库下该脚本通用

功能:导出一个用户的数据结构,包括表、视图、索引、约束、存储过程、触发器、函数、序列等等的定义,并且每个定义为一个文件
       导出的各个对象的定义格式比较规范。
       如表的定义为:
        prompt  Create Table BBNACTIVEHISTORY
        CREATE TABLE test(
                USERID                        VARCHAR2(20)        NOT NULL,
                SPUSERID                VARCHAR2(30)        NOT NULL,
                PRODUCTID                VARCHAR2(20)        NOT NULL,
                GAMETYPE                NUMBER        NOT NULL,
                STARTTIME                DATE        NOT NULL,
                CHARGED                        CHAR(1)        default        'N'                NOT NULL
        );
      
      每个存储过程有多个参数,可以控制输出何种形式的内容,如可以只生成删除表的sql,可以在生成的创建表与索引的语句上加上storage子句等等。

运行 user_dll_sql.sql的准备工作:

1.  修改win_mkdir.bat文件,以便生成存放生成脚本的基本目录及其子目录
        win_mkdir.bat文件生成上面所需要的所有目录
        打开win_mkdir.bat文件,修改BASE_DIC变量的值,如c:\temp\,该目录是存放生成的脚本文件的基本目录
        
        
2.        运行 win_mkdir.bat文件创建必要的目录

3.        用sql*plus以想导出数据结构的用户登陆到数据库
        运行user_dll_sql.sql 生成文件的路径文件,生成所有的ddl语句
        运行文件时,将存放生成脚本的基本目录作为参数(与步骤1改的基本目录一样)传入, ?要根据需要改为实际的目录
        SQL> @?\user_ddl_sql.sql c:\temp\
        

说明:
        运行win_mkdir.bat,文件后,会自动在生成脚本的基本目录下产生如下目录:
        procedures, functions, triggers, packages, temp_sql.
        每个目录的作用如下:
        procedures: 该目录存放存储过程, 有子目录separ_files, 该目录下的每个文件都是一个存储过程的源代码
        functions: 该目录存放函数, 有子目录separ_files, 该目录下的每个文件都是一个函数的源代码
        triggers: 该目录存放触发器, 有子目录separ_files, 该目录下的每个文件都是一个触发器的源代码
        packages: 该目录存放包, 有子目录separ_files, 该目录下的每个文件都是一个包的源代码
                                                        有子目录separ_headbobdy_file, 该目录下的每个文件都是一个包的包头或包体的源代码
        temp_sql:存放生成的临时文件
运行了一把,确实很不错。
顶上一把。