通过MySQL数据结构脚本生成Powerdesigner模型

 

 

 

导出要建模的表结构脚本.sql

 

 

 

 File -> Reverse Engineer -> Database

 

General-DBMS:MySQL5.0(根据自己MySQL版本选择)

 

 

 附常用脚本

 

脚本执行路径

 

 

备注到名称和名称到备注脚本 在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文。Name用来显 示,Code在代码中使用,但Comment中的文字会保存到数据库Table或Column的Comment中,当Name已经存在的时候,再写一次 Comment很麻烦,可以使用以下代码来解决这个问题

'代码一:将Name中的字符COPY至Comment中  
Option   Explicit   
ValidationMode   =   True   
InteractiveMode   =   im_Batch  
  
Dim   mdl   '   the   current   model  
  
'   get   the   current   active   model   
Set   mdl   =   ActiveModel   
If   (mdl   Is   Nothing)   Then   
      MsgBox   "There   is   no   current   Model "   
ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then   
      MsgBox   "The   current   model   is   not   an   Physical   Data   model. "   
Else   
      ProcessFolder   mdl   
End   If  
  
'   This   routine   copy   name   into   comment   for   each   table,   each   column   and   each   view   
'   of   the   current   folder   
Private   sub   ProcessFolder(folder)   
      Dim   Tab   'running     table   
      for   each   Tab   in   folder.tables   
            if   not   tab.isShortcut   then   
                  tab.comment   =   tab.name   
                  Dim   col   '   running   column   
                  for   each   col   in   tab.columns   
                        col.comment=   col.name   
                  next   
            end   if   
      next  
  
      Dim   view   'running   view   
      for   each   view   in   folder.Views   
            if   not   view.isShortcut   then   
                  view.comment   =   view.name   
            end   if   
      next  
  
      '   go   into   the   sub-packages   
      Dim   f   '   running   folder   
      For   Each   f   In   folder.Packages   
            if   not   f.IsShortcut   then   
                  ProcessFolder   f   
            end   if   
      Next   
end   sub

 

另外在使用REVERSE ENGINEER从数据库反向生成PDM的时候,PDM中的表的NAME和CODE事实上都是CODE,为了把NAME替换为数据库中Table或Column的中文Comment,可以使用以下脚本:

'代码二:将Comment中的字符COPY至Name中   
  
Option   Explicit   
ValidationMode   =   True   
InteractiveMode   =   im_Batch  
  
Dim   mdl   '   the   current   model  
  
'   get   the   current   active   model   
Set   mdl   =   ActiveModel   
If   (mdl   Is   Nothing)   Then   
      MsgBox   "There   is   no   current   Model "   
ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then   
      MsgBox   "The   current   model   is   not   an   Physical   Data   model. "   
Else   
      ProcessFolder   mdl   
End   If  
  
Private   sub   ProcessFolder(folder)   
On Error Resume Next  
      Dim   Tab   'running     table   
      for   each   Tab   in   folder.tables   
            if   not   tab.isShortcut   then   
                  tab.name   =   tab.comment  
                  Dim   col   '   running   column   
                  for   each   col   in   tab.columns   
                  if col.comment="" then  
                  else  
                        col.name=   col.comment   
                  end if  
                  next   
            end   if   
      next  
  
      Dim   view   'running   view   
      for   each   view   in   folder.Views   
            if   not   view.isShortcut   then   
                  view.name   =   view.comment   
            end   if   
      next  
  
      '   go   into   the   sub-packages   
      Dim   f   '   running   folder   
      For   Each   f   In   folder.Packages   
            if   not   f.IsShortcut   then   
                  ProcessFolder   f   
            end   if   
      Next   
end   sub

 

powerdesign小写转大写(ctrl+shift+x)脚本

'文件:powerdesigner.ucase.VBs
 '版本:1.0
 '功能:遍历物理模型中的所有表,将表名、表代码、字段名、字段代码全部由小写改成大写;
 ' 并将序列的名和代码由小写改成大写。
 '用法:打开物理模型,运行本脚本(Ctrl+Shift+X)
 '备注:
 '*****************************************************************************
 dim model 'current model
 set model = ActiveModel
If (model Is Nothing) Then
 MsgBox "There is no current Model"
 ElseIf Not model.IsKindOf(PdPDM.cls_Model) Then
 MsgBox "The current model is not an Physical Data model."
 Else
 ProcessTables model
 ProcessSequences model
 End If
'*****************************************************************************
 '函数:ProcessSequences
 '功能:递归遍历所有的序列
 '*****************************************************************************
 sub ProcessSequences(folder)
 '处理模型中的序列:小写改大写
 dim sequence
 for each sequence in folder.sequences
 sequence.name = UCase(sequence.name)
 sequence.code = UCase(sequence.code)
 next
 end sub
'*****************************************************************************
 '函数:ProcessTables
 '功能:递归遍历所有的表
 '*****************************************************************************
 sub ProcessTables(folder)
 '处理模型中的表
 dim table
 for each table in folder.tables
 if not table.IsShortCut then 
ProcessTable table
 end if
 next
 '对子目录进行递归
 dim subFolder
 for each subFolder in folder.Packages
 ProcessTables subFolder
 next 
end sub
'*****************************************************************************
 '函数:ProcessTable
 '功能:遍历指定table的所有字段,将字段名由小写改成大写,
 ' 字段代码由小写改成大写
 ' 表名由小写改成大写 
'*****************************************************************************
 sub ProcessTable(table)
 dim col
 for each col in table.Columns
 '将字段名由小写改成大写
 col.code = UCase(col.code)
 col.name = UCase(col.name)
 next 
table.name = UCase(table.name)
 table.code = UCase(table.code)
 end sub

 

转载于:https://www.cnblogs.com/ff111/p/10616605.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值