在工作中使用PowerDesigner进行物理建模的时候(pdm文件),经常需要将Name列写成中文,Code列写成英文字段,最后生成SQL脚本时不会自动生成表和字段的注释。此时 比较简单的处理方式是执行.vbs
脚本。下面整理了两个常用的脚本。
脚本使用方法
在PowerDesigner 物理建模界面中,按如下方式:
菜单栏
->tool
->Execute Commans
->Edit/Run Script...
->Open
->打开脚本文件
->Run
或
ctrl + shift + x
->Open
->打开脚本文件
->Run
注意:点击Run
执行之后不会有任何提示,只要没报错,应该就没有问题,可以打开某个表的Preview页签
查看效果。
执行前:
执行后:
补充说明:物理建模指的是在新建模型的时候,选中的是Physical Data
。
脚本
1. NameToComment.vbs
文件名:
NameToComment.vbs
建议存放路径:
\Sybase\PowerDesigner 16\VB Scripts\NameToComment.vbs
作用:
将Name列
中输入的值,转为数据库字段的Comment说明
。
使用场景:
该脚本在正向生成SQL脚本的时候使用。
正向生成SQL脚本指的是根据pdm文件,生成对应数据库可执行的SQL脚本,常用于设计阶段。
使用说明:
在对应目录下创建NameToComment.vbs
文件,将如下脚本复制到文件中即可。
脚本如下:
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
2. CommentToName.vbs
文件名:
CommentToName.vbs
建议存放路径:
\Sybase\PowerDesigner 16\VB Scripts\CommentToName.vbs
作用:
将表字段Comment说明
中的值,转为Name列
的输入值。
使用场景:
该脚本在反向生成的时候使用。
反向生成指的是已经有了数据表,根据已有数据表反向生成pdm文件,常用于补充文档时使用
使用说明:
在对应目录下创建CommentToName.vbs
文件,将如下脚本复制到文件中即可。
脚本如下:
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