1. 程式人生 > >mysql 生成pdm

mysql 生成pdm

pdm

1.條件

1.1 工具powerDesigner16.5

1.2 mysql數據庫地址或腳本

1.3 mysql-connector-odbc-5.3.4-winx64.msi


2.操作步驟

2.1 database > change DBMS 選擇Mysql5.0

2.2 打開powerDesigner16.5工具, file > reverse Engineer > database

技術分享


確定,則生成對應的pdm.


3.圖形列表中展示註釋

‘* File:     comment2name.vbs
‘* Purpose:  在PowerDesigner的PDM圖形窗口中顯示數據列的中文註釋
‘* Title:    將字段的comment賦值到字段的name中
‘* Category: 打開物理模型,運行本腳本(Ctrl+Shift+X)
‘* Copyright:[email protected],2006/07/25 .
‘* Author:   foxzz
‘* Created:  
‘* Modified: 
‘* Version:  1.0
‘* Comment:  遍歷物理模型中的所有表,將字段的comment賦值到字段的name中。
‘            在將name置換為comment過程中,需要考慮的問題
‘            1、name必須唯一,而comment有可能不唯一。
‘               處理辦法是如果字段的comment重復,則字段的name=comment+1、2、3...
‘            2、comment值有可能為空,這種情況下對字段的name不處理。
‘               針對Oracle數據庫,將comment on column 字段名稱 is ‘‘;添加到C:/pdcomment.txt文件中。
‘               在補充comment完畢後,便於在數據庫中執行        
‘******************************************************************************

Option Explicit 
ValidationMode = True 
InteractiveMode = im_Batch

Dim system, file
Set system = CreateObject("Scripting.FileSystemObject")
Dim ForReading, ForWriting, ForAppending   ‘打開文件選項
ForReading   = 1 ‘ 只讀 
ForWriting   = 2 ‘ 可寫 
ForAppending = 8 ‘ 可寫並追加
‘打開文本文件
Set file = system.OpenTextFile("C:/pdcomment.txt", ForWriting, true)


‘判斷當前model是否物理數據模型
Dim mdl
Set mdl = ActiveModel 
If (mdl Is Nothing) Then 
   MsgBox "處理對象無模型" 
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then 
   MsgBox "當前模型不是物理數據模型" 
Else 
   ProcessFolder mdl,file 
End If 
file.Close


‘******************************************************************************
Private sub ProcessFolder(folder,file)

Dim i,j,k
i=0:j=0:k=0

‘列數組,記錄字段裏不重復的comment
Dim ColumnComment() 
Dim ColumnCommentNumber()
ReDim Preserve ColumnComment(i)
ReDim Preserve ColumnCommentNumber(i)

Dim tbl   ‘當前表
Dim col   ‘當前字段 
dim curComment  ‘當前字段comment

‘處理模型中的表
for each tbl in folder.tables 
    if not tbl.isShortcut then 
       if len(trim(tbl.comment))<>0 then
          ‘可以在這裏顯示table的comment
          ‘tbl.name = tbl.name+"("+trim(tbl.comment)+")"
       end if  

       ‘處理表中的列
       for each col in tbl.columns 
           k = 0
           curComment = trim(col.comment)
           if len(curComment)<>0 then
              ‘遍歷相異的comment數組
              for j = 0 to i
                  if ColumnComment(j) = curComment then
                     ‘如果找到相同的comment,則相關計數器加1
                     ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1
                     k = j
                  end if 
              Next
              ‘如果沒有相同的comment,則k=0,此時ColumnCommentNumber(0)也為0
              ‘否則ColumnCommentNumber(k)不為0
              if ColumnCommentNumber(k) <> 0 then
                 col.name = curComment & cstr(ColumnCommentNumber(k))
              else
                 col.name  = curComment
                 ‘ColumnComment(0)、ColumnCommentNumber(0)永遠為空
                 ‘將相異的comment記錄添加到數組中
                 i = i + 1
                 ReDim Preserve ColumnComment(i)
                 ReDim Preserve ColumnCommentNumber(i)
                 ColumnComment(i) = curComment
                 ColumnCommentNumber(i) = 0
              end if
           else
              ‘寫入文件中
              file.WriteLine "comment on column "+ tbl.name+"."+col.code+" is ‘‘;"           
           end if
       next 
    end if 
    ‘由於不同表的name允許相同,因此此時重新初始化。
    ‘因為ColumnComment(0)、ColumnCommentNumber(0)為空,可以保留
    ReDim Preserve ColumnComment(0)
    ReDim Preserve ColumnCommentNumber(0)
    i=0:j=0:k=0

next

Dim view  ‘當前視圖
for each view in folder.Views 
    if not view.isShortcut then 
       ‘可以在這裏顯示view的comment
       ‘view.name =  view.comment
    end if 
next

‘對子目錄進行遞歸
Dim subpackage ‘folder
For Each subpackage In folder.Packages 
    if not subpackage.IsShortcut then 
       ProcessFolder subpackage , file
    end if 
Next

end sub


tools > excute commands > Edit/Run scripts

mysql 生成pdm