逆向工程(mysql表到pdm)

背景:

通过powerdesiger将mysql数据库中的表生成pdm文件。

使用软件:

  1. powerdesigner 16.5
  2. Mysql 5.7

通过powerdesiger建立数据库连接:

     

 

该问题一直没有得到解决,网上说的因为powerdesiger 是 32位的,但我安装的就是64位的。

 

于是选择了第二种方案:通过sql文件生成pdm文件。

 

  

   

生成的pdm文件也有不少问题:

  1. 中文注释乱码:

       

 

  1. Table properties 显示 comment 列

      

 

  1. vb脚本

脚本执行:

 PowerDesigner->Tools->Execute Commands->Edit/Run Scripts

 代码1:将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  
 
'This routine copy name into code 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  
if len(tab.comment) <> 0 then  
tab.name = tab.comment  
end if  
On Error Resume Next  
Dim col 'running column  
for each col in tab.columns  
if len(col.comment) <>0 then  
col.name =col.comment  
end if  
On Error Resume Next  
next  
end if  
next  
end sub 

 

代码2:将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 code 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值