每次我用PowerDesigner设计数据库时,都只是注释了一些复杂的字段,一些简单的字段根本就不用注释,见到code就知道其中的意思,奈何本人英文水平有限,加上一些英文单词太长进行了简写,我就想要把字段名称name这列复制到没有注释的comment列里面,这样的话通过数据库可视化工具navicat就可以直接看到了。 数据库是ORACLE的话还好说,MySql就恼火了。最后终于找到通过脚本去生成。步骤如下:
创建表:
比如:先创建一张学生表student,有如下字段,我仅注释了性别字段。
打开编辑脚本的界面:
Tools->Execute Commands->Edit/Run Scripts(快捷键:Ctrl+Shift+X)
打开一个空白的脚本编辑界面,如下图:
将如下脚本代码复制到空白的代码块内:
'把pdm中的字段名称name自动添加到comment里面
'如果comment为空,则填入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 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
if trim(tab.comment)="" then'如果有表的注释,则不改变它.如果没有表注释.则把name添加到注释里面.
tab.comment = tab.name
end if
Dim col' running column?
for each col in tab.columns
if trim(col.comment)="" then'如果col的comment为空,则填入name,如果已有注释,则不添加;这样可以避免已有注释丢失.
col.comment= col.name
end if
next
end if
next
Dim view'running view
for each view in folder.Views
if not view.isShortcut and trim(view.comment)="" 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
脚本如果复制有问题的话可以去下载:
//download.csdn.net/download/zhangkai19910815/12446998
点击 Run 执行脚本即可。
这里也可以将脚本保存,下次设计完pdm以后就可以直接open打开,再次执行。
这里我将脚本保存为name2comment.vbs, 下次直接找到这个脚本就可以了。
查看执行脚本后的结果:
可以看到没有注释的comment列里已经填充了字段名称。