每次我用PowerDesigner设计数据库时,都只是注释了一些复杂的字段,一些简单的字段根本就不用注释,见到code就知道其中的意思,奈何本人英文水平有限,加上一些英文单词太长进行了简写,我就想要把字段名称name这列复制到没有注释的comment列里面,这样的话通过数据库可视化工具navicat就可以直接看到了。 数据库是ORACLE的话还好说,MySql就恼火了。最后终于找到通过脚本去生成。步骤如下:

创建表:

比如:先创建一张学生表student,有如下字段,我仅注释了性别字段。

sql server表的设计创建备注_sql server表的设计创建备注

打开编辑脚本的界面:

Tools->Execute Commands->Edit/Run Scripts(快捷键:Ctrl+Shift+X)

sql server表的设计创建备注_pdm_02


打开一个空白的脚本编辑界面,如下图:

sql server表的设计创建备注_pdm_03

将如下脚本代码复制到空白的代码块内:
'把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

sql server表的设计创建备注_pdm_04


脚本如果复制有问题的话可以去下载:

//download.csdn.net/download/zhangkai19910815/12446998

点击 Run 执行脚本即可。

这里也可以将脚本保存,下次设计完pdm以后就可以直接open打开,再次执行。

sql server表的设计创建备注_sql_05


这里我将脚本保存为name2comment.vbs, 下次直接找到这个脚本就可以了。

sql server表的设计创建备注_sql server表的设计创建备注_06

查看执行脚本后的结果:

可以看到没有注释的comment列里已经填充了字段名称。

sql server表的设计创建备注_sql_07

最后可以生成建表的SQL语句了

sql server表的设计创建备注_powerdesigner_08