powerdesigner字段小写转大写脚本

建模导出得时发现字段都是小写,未转换,记录下转换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,可以导出了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值