Get DDL工具

    在DBMS_METADATA之前, 要获得建表语法, 估计很多人都要用Toad或PL/SQL Developer之类的程序了, 不过很多数据库运行在Unix或Linux上, 并不允许我们用这类工具去连接, 这时还真是一件难事. 就算有了DBMS_METADATA我也并不觉得它很方便, 因此不如自已写一个角本, 在我的DBDiff程序中, 已经通过exp/imp的办法实现了, 将相关部分功能独立出来, 就成了getddl工具(Windows版本).

    程序经以过以下步骤来实现这个功能: 1, rows=n进行导出; 2, 用show=y加上indexfile选项生成内容; 3, 处理生成的indexfile并打印出DDL语句. 因此这个小工具需要Oracle的客户端, 并且客户端的版本不能高于服务器端.

Usage: getddl table=... [user=...]
(c) Copyright Lou Fangxin, 2008, all rights reserved.

    user就是exp或imp时的用户名, table就是exp的tables参数, user参数不指定就以sys用户连接. 下面来看一个例子.

C:\>getddl table=sh2.t_iottest
CREATE TABLE "T_IOTTEST" ("COL1" NUMBER NOT NULL ENABLE,
  PRIMARY KEY ("COL1") ENABLE)
  ORGANIZATION INDEX PCTFREE 10
  STORAGE ( FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) PCTTHRESHOLD 50 ;

    在生成的DDL角本中, 没有表对应的Trigger, 如果是Context有关的, 也有可能不准确, 另外表的授权语句不能生成. 用这个工具导出的DDL语句中没有Tablespace子句, 也没有Initial和Next子句. 欢迎大家使用!

留言 (7)

又出新招啊,支持:)

好东西,收藏了,谢谢

这个功能,我是写了个package完成的。

你的这个package,支持分区表, 复合分区表?

支持啊,为了写这个东西,把相关的view研究了个遍,搞得老复杂,没什么技术含量^|^

我以前用Java写过, 嫌烦没有写全. 不过感觉没有exp/imp这样的方法保险.

我放在了自己常用的一个package里,包括create table, comment, index, trigger, object grant.不知道还缺啥?

http://hi.baidu.com/edeed/blog/item/97378bd4e0129705a18bb733.html

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Tom has opened his own business while his classmates are still slogging away at school.
  • 当汤姆的同学还在学校苦读时, 他已经开始了自己的事业.
  • I like writing, but I wouldn't take it as my career.
  • 我喜欢协作但不愿以此为职业.
  • I worked as an intern in that firm last summer.
  • 去年夏天我在那家商行实习.
  • He's a very efficient young man though a little proud.
  • 他是个很有能力的人, 但是有点骄傲.
  • He made a successful career in business.
  • 他的商务生涯十分成功.