pd 反向
1. )首先新建一个“PhysicalDataModel”类型的文件,然后点击“Database”->"Configure Connections",弹出窗口“Configure Data Connections”, 并选择"Connection Profiles
2.) 填写相关信息
3.) 点击“Database”->"Update Model from Database(快捷键为:CTRL_R)",弹出窗口“Database Reverse Engineering Options”
4.)选择需要进行反向工程的数据库或数据库中的某些表,然后点击“OK”即可完成数据库的反向工程操作。(注意:默认是所有数据库全部选中的,所以在进行选择需要进行反向工程的数据库之前,先点击
使得数据库全部未选中。)
到目前为止,powerdesigner的反向工程的连接环境全部配置完成,此时只需选中需要进行反向工程的数据库或表,点击“OK”便可导出数据的PhysicalDataModel图。
注意:java 64位版本不支持 报 Could not Initialize JavaVM 错误,需要在java32位版本下运行
=====================================
pd 反向完成以后 显示问题

不是很直观:我们需要显示成:

在 反向完成的 工作区域 点击 ctrl+shift+X 或者(Tools-->Execute Commands-->Edit/Run Script)
输入:
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("d:\temp\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
Dim regex '正则表达式
Set regex=New RegExp
'处理模型中的表
for each tbl in folder.tables
if not tbl.isShortcut then
if len(trim(tbl.comment))<>0 then
'可以在这里显示table的comment
regex.Pattern="\[.*\]"
If regex.Test(tbl.name) then
else
tbl.name = tbl.name+"["+trim(tbl.comment)+"]"
end if
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
regex.Pattern="\[.*\]"
If regex.Test(col.name) Then
else
col.name =col.name+"["+curComment & cstr(ColumnCommentNumber(k))+"]"
End if
Else
regex.Pattern="\[.*\]"
If regex.Test(col.name) Then
else
col.name = col.name+"["+curComment+"]"
End if
'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
regex.Pattern="\[.*\]"
If regex.Test(view.name) Then
Else
view.name = view.name+"["+view.comment+"]"
End if
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
点击 run , 执行完成以后 就ok了

本文介绍了如何使用PowerDesigner进行数据库反向工程操作,并通过编写脚本来自定义数据模型中的表和字段注释,包括解决Java64位版本可能遇到的初始化JavaVM错误。此外,提供了将自定义注释应用到数据库实体的详细步骤,以及如何将这些注释以文本形式保存到文件中。
2368

被折叠的 条评论
为什么被折叠?



