建模导出得时发现字段都是小写,未转换,记录下转换vbs脚本。
powerdesigner执行vbs快捷键ctrl+shift+x
执行下面得脚本
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.code = tab.name
Dim col ' running column
for each col in tab.columns
col.code= UCase(col.code)
next
'end if
next
' Dim view 'running view
' for each view in folder.Views
' if not view.isShortcut then
' view.code = 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:
执行后sql:
可以先大致浏览下要导出得sql,在powerdesigner中快捷键 CTRL+G 或者 在 database➡generate database下打开Preview,如图:标红得都有点小问题,如小写或者有空格之类得
额喝,这个脚本有局限,只适用转换字段code,name和表名都没有转,换一个试试
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl ' 当前模型
' 获取当前模型
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "没有打开一个模型"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "当前模型不是一个PDM"
Else
'调用处理程序
ProcessFolder mdl
End If
'调用的处理程序
Private sub ProcessFolder(folder)
Dim Tab '要处理的表
for each Tab in folder.Tables
' if not Tab.isShortcut then
' Tab.code = tab.name
'表名处理,前边添加前缀,字母小写
Tab.name= UCase(Tab.name)
Tab.code= UCase(Tab.code)
Dim col ' 要处理的列
for each col in Tab.columns
'列名称和code全部小写,大写诗UCase
col.code= UCase(col.code)
col.name= UCase(col.name)
next
'end if
next
' 处理视图
' Dim view 'running view
' for each view in folder.Views
' if not view.isShortcut then
' view.code = view.name
' end if
' next
' 递归进入 sub-packages
Dim f ' sub folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
查看校验:
ok,可以导出了