博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释
阅读量:6914 次
发布时间:2019-06-27

本文共 3901 字,大约阅读时间需要 13 分钟。

我想直观的查看数据库表之间的关系与中文注释,发现Navicat Premium下的表模型功能,并没有注释功能:

0818b9ca8b590ca3270a3433284dd417.png

用起来不是很方便。所有想到了用PowerDesigner来逆向MYSQL中的表,并显示中文注释。

一、安装ODBC驱动

当前环境:

window 10 64bit

PowerDesigner 16.5 32bit

Connector/ODBC 5.1.13 下载地址:

0818b9ca8b590ca3270a3433284dd417.png

选择win-32 MIS安装包,由于用的PD版本是32位的,所有选择ODBC也得32位否则会出现不兼容。

0818b9ca8b590ca3270a3433284dd417.png

下载之后点击安装。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

二、配置OBDC驱动连接

安装好之后,在控制面板中,选择管理工具

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

然后填写正确的TCP/IP Server 、User、 Password、点击Database 三角标会弹出相关的库供选择

0818b9ca8b590ca3270a3433284dd417.png

然后可以点击TEST测试连接。最后点击OK。

0818b9ca8b590ca3270a3433284dd417.png

会发现多出一个PD_MYSQL.这个就是在Data Source Name定义的。

三、PowerDesigner连接MYSQL

打开PowerDesigner,操作如下

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

点击确定后。会列出全部数据的表格。

0818b9ca8b590ca3270a3433284dd417.png

可以在:那里选择我们想要的库

0818b9ca8b590ca3270a3433284dd417.png

然后可以通过: Select ALL和Deselect All全选和全不选。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

选择想要的表,然后点击OK。显示如下:

0818b9ca8b590ca3270a3433284dd417.png

四、显示中文注释

导是导入成功了,但是并没有显示中文注释,显示表的中文注释操作如下:

在tool中选择Display Preferences

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

在Table中选择Comment

0818b9ca8b590ca3270a3433284dd417.png

然后点击OK。这样表的注释就有了,问题是还有字段的注释没有,选中Table,右键Properties,会发现其中已经有了Comment,一栏

0818b9ca8b590ca3270a3433284dd417.png

问题是没有在PDM图上显示。解决方法如下,要将注释comment的内容替换到code或name中,即可。步骤如下:

1、Tools->Display Preferences->Table->Advanced...->Columns->List Columns

0818b9ca8b590ca3270a3433284dd417.png

然后将Code移到最上面

0818b9ca8b590ca3270a3433284dd417.png

然后点击OK。

2、Tools下增加一个vbs的脚本,可以将code内容替换为注释内容

0818b9ca8b590ca3270a3433284dd417.png

复制脚本执行。即可

0818b9ca8b590ca3270a3433284dd417.png

vbs文件内容如下(注意需要管理员运行):

'******************************************************************************

'* File: comment2code.vbs

'* Purpose: 在PowerDesigner的PDM图形窗口中显示数据列的中文注释

'* Title: 将字段的comment赋值到字段的code中

'* Category: 打开物理模型,运行本脚本(Ctrl+Shift+X)

'* Copyright:foxzz@163.com,2006/07/25 .

'* Author: foxzz

'* Created:

'* Modified:

'* Version: 1.0

'* Comment: 遍历物理模型中的所有表,将字段的comment赋值到字段的code中。

' 在将code置换为comment过程中,需要考虑的问题

' 1、code必须唯一,而comment有可能不唯一。

' 处理办法是如果字段的comment重复,则字段的code=comment+1、2、3...

' 2、comment值有可能为空,这种情况下对字段的code不处理。

' 针对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.code = tbl.code+"("+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.code = curComment & cstr(ColumnCommentNumber(k))

else

col.code = 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.code+"."+col.code+" is '';"

end if

next

end if

'由于不同表的code允许相同,因此此时重新初始化。

'因为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.code = 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

执行成功后,效果如下

0818b9ca8b590ca3270a3433284dd417.png

替换后的字段如下

0818b9ca8b590ca3270a3433284dd417.png

转载地址:http://pcncl.baihongyu.com/

你可能感兴趣的文章
蓝桥杯第五届B组 李白打酒
查看>>
shell编程基础练习
查看>>
20165330 2017-2018-2 《Java程序设计》第3周学习总结
查看>>
sql 语句整理
查看>>
mouse click with ctypes.windll and win32api
查看>>
running a notebook server on centos
查看>>
JS 正则表达式 0.001 ~99.999
查看>>
record-05 函数
查看>>
TF-IDF与余弦相似性的应用(一):自动提取关键词
查看>>
web2py官方文档翻译01
查看>>
.NET Framework 4.5 五个新特性
查看>>
随机梯度下降法优化实例
查看>>
自己动手制作一个本地的yum仓库
查看>>
2015年毕业生收到的offer和薪资透露
查看>>
新手老手都离不开八大开发工具
查看>>
Ubuntu下用命令行快速打开各类型文件(转)
查看>>
C语言程序设计_zju——第3周编程练习1_时间换算
查看>>
Nodejs调用Aras Innovator服务,处理AML并返回AML
查看>>
纯数学教程 Page 324 正项级数绝对收敛的一种判别法
查看>>
解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
查看>>