日期:2014-05-16  浏览次数:20698 次

PowerDesigner生成数据库建表sql脚本

一、生成sql server 2000或oracle建表sql脚本
  
  1、新建一个物理模型,通过database菜单下的change current dbms可查看当前所用的DBMS是什么类型的,比如sql server 2000 或oracle 10g,当前选择sql server 2000。
  
  2、在新建的dbms为sql server 2000的物理模型中添加表及关系,通过database菜单下的generate database可将当前DBMS的表结构及关系导出成sql语句。
  
  3、若想将sql server 2000的表结构及关系变成oracl 10g的表结构及关系,可通过Tools菜单下的generate physical data model,再选择DBMS为oracle10g,就可生成oracl10g的表结构及关系。
  
  4、若想将oracl10g中的表结构及关系导出成sql语句,执行database菜单下的generate database可将当前DBMS的表结构及关系导出成sql语句。
  
  
  注意:oracle10g生成的sql语句可能表名及字段名存在用引号括起的情况,不用担心,通过简单的设置即可解决。
  
  
  
  
  二、PowerDesigner生成数据库建表sql脚本时出现双引号解决方法(测试通过的软件版本为PowerDesigner V15.1.0.2850)
  
   PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有“”,会按照 ORACLE默认的设置建表(DBA STUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”。如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。如果加了引号,sql或者hql查询“Column_1='XXX'”时,就会报错:ORA-00904: "COLUMN_1": 无效的标识符,除非写为“‘Column_1’='XXX'”。
  
  这个问题是生成脚本格式的问题,因此,我们可以尝试在DBMS配置文件中修改相应的格式设置来解决这个问题。选择“DBMS Properties”,选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。