pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)

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

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

一、安装ODBC驱动

当前环境:

window 10 64bit

PowerDesigner 16.5 32bit

Connector/ODBC 5.1.13 下载地址:

http://dev.mysql.com/downloads/connector/odbc/5.1.html

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

下载之后点击安装。

二、配置OBDC驱动连接

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

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

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

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

三、PowerDesigner连接MYSQL

打开PowerDesigner,操作如下

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

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

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

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

四、显示中文注释

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

在tool中选择Display Preferences

在Table中选择Comment

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

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

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

然后将Code移到最上面

然后点击OK。

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

复制脚本执行。即可

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

执行成功后,效果如下

替换后的字段如下

因为原文的VB脚本不能用,找的其它博文里面的可以成功执行:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java高级反射_反射---Java高级开发必须懂的

理解反射对学习Java框架有很大的帮助&#xff0c;如Spring框架的核心就是使用Java反射实现的&#xff0c;而且对做一些Java底层的操作会很有帮助。一、Class类的使用1、万事万物皆对象&#xff0c;(当然&#xff0c;基本数据类型&#xff0c;静态成员不是面向对象(属于类的))&a…

win7卸载java_Win7彻底卸载Oracle 11g图文步骤(靠谱)

网上资料结合自己的操作整理出的一套靠谱的彻底卸载Oracle 11g的步骤&#xff01;(Win7)&#xff0c;具体内容详情如下所示&#xff1a;1&#xff1a;停掉所有Oracle相关的服务1.1打开服务方式如下&#xff1a;1.1.1&#xff1a;右击“计算机”–>管理–>服务和应用程序–…

vba与python相比2019_重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言

点击上方“CSDN”&#xff0c;选择“置顶公众号”关键时刻&#xff0c;第一时间送达&#xff01;如果微软的 Excel 中支持了人生苦短的 Python&#xff0c;你还会喜欢那个直接且易上手的 VBA 编程吗&#xff1f;近日&#xff0c;据国外媒体 BLEEPINGCOMPUTER 报道&#xff0c;微…

会话标识未更新 java_Appscan漏洞之会话标识未更新

本次针对 Appscan漏洞 会话标识未更新进行总结&#xff0c;如下&#xff1a;1. 会话标识未更新1.1、攻击原理在认证用户或者以其他方式建立新用户会话时&#xff0c;如果不使任何现有会话标识失效&#xff0c;攻击者就有机会窃取已认证的会话&#xff0c;此漏洞可结合XSS获取用…

arcgis的python接口_arcgis-Python的ArcGIS API-Esri Screenshots

作者:Esri### 作者邮箱:pythonesri.com### 首页:https://developers.arcgis.com/python/### 文档:None### 下载链接# ArcGIS API for PythonWork with maps and geospatial data in Python using The ArcGIS API for Python.Use simple and efficient tools powered by Web GIS…

gcc编译器java_「gcc编译器下载」gcc编译器下载各版本下载 - seo实验室

gcc编译器下载相关阅读RequestMapping(value"/download_index")public String downloadExceJava SE Development Kit 6u41Product / File DescriptionFile SizeDownloadpasswordLinux x8665.43 MBjdk-6u41-1.以流的方式下载.public HttpServletResponse download(Str…

Java输出小明算对多少题目_2014年Java方向C组第十题

标题&#xff1a;矩阵翻硬币小明先把硬币摆成了一个 n 行 m 列的矩阵。随后&#xff0c;小明对每一个硬币分别进行一次 Q 操作。对第x行第y列的硬币进行 Q 操作的定义&#xff1a;将所有第 ix 行&#xff0c;第 jy 列的硬币进行翻转。其中i和j为任意使操作可行的正整数&#xf…

iif能用到mysql中吗_数据库基础知识:SQL中的IIF语句详解

IIf返回由逻辑测试确定的两个数值或字符串值之一。语法数字IIf(Logical EXPression, Numeric Expression1, Numeric Expression2)如果 Logical Expression 取值为 TRUE&#xff0c;则此函数返回 Numeric Expression1&#xff0c;否则&#xff0c;返回 Numeric Expression2。字符…

java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列

我需要使用iText从pdf文件中提取文本.问题是&#xff1a;一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本)这是代码&#xff1a;public class pdf{private static String INPUTFILE "http://www.revuemedecinetropicale.…

java 反射执行语句_JAVA反射机制

JAVA反射机制定义&#xff1a;JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称…

java 非静态 初始化_Java非静态代码块和实例初始化过程

1 非静态代码块非静态代码块特点①可以为实例变量(非静态的属性)初始化②每次创建对象的时候&#xff0c;都会执行一次&#xff0c;且先于构造器执行③若有多个非静态的代码块&#xff0c;那么按照定义的顺序从上到下依次执行④代码块中既可以调用非静态的变量和方法&#xff0…

java程序员面试怎么难为面试官_Java程序员面试这些多线程问题你知道吗?

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。所以你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题&#xff0c;特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有…

linux es连接mysql_Linux下ES,kibana,mysql,kafka,zookeeper启动关闭方式

Linux下ES&#xff0c;kibana,mysql,kafka&#xff0c;zookeeper启动关闭方式ES前台方式启动切换到ES的bin目录下&#xff0c;执行./elasticsearch命令关闭窗口或者ctrlc会停止运行后台方式启动同样切换到ES的bin目录下&#xff0c;执行 ./elasticsearch -d 命令查看实时的日志…

java.util.timertask_java.util.TimerTask翻译

java.utilClass TimerTaskjava.lang.Objectjava.util.TimerTask All Implemented Interfaces:public abstract class TimerTaskextendsObjectimplementsRunnableA task that can be scheduled for one-time or repeated execution by a Timer. 由Timer安排执行一次或重复执行的…

java还值_Java到底是引用传递还是值传递

前言前段时间在群里看到类似这样一个问题&#xff0c;下面的代码会输出什么呢&#xff1f;public void test(){String str "hello";change(str);System.out.println(str);}private void change(String str){str "world";}当时看到这题&#xff0c;瞬间勾…

什么是java中的面向对象编程_什么是面向对象编程

什么是面向对象编程时间&#xff1a;2018-01-23 来源&#xff1a;面向对象编程讲解一.前言其实不管是java还是.net都是属于面向对象程序设计语言&#xff0c;归根结底&#xff0c;它们都离不开面向对象&#xff0c;所以什么是面向对象呢&#xff0c;意思就是object-oriente…

java两个长度不同数组_两组数组,长度不一样,如果其中一个数组的值在另一个中不存在,则不符合要求.怎么算?...

思路一先找到最长的数组&#xff0c;然后循环短的数组并判断元素是否在长数组中public class Main {public static void main(String[] args) throws CloneNotSupportedException {String[] strArr1{"ee","aa","bb","cc"};String[] st…

java如何给顺序表赋值_JAVA模拟新增顺序表及单链表

最近在回顾大学学的数据结构&#xff0c;这里给大家用javwww.cppcns.coma模拟顺序表和单链表的新增1顺序表新增/*** 顺序www.cppcns.com表** author cjd**/public class ArrayList {private Object[] elementData; // 底层是一个数组&#xff0c;目前还没有确定长度private int…

php sql查询两个表语句,sql多表查询语句与方法

sql多表查询有很多种方法&#xff0c;如有自然连接 INNER JOIN,外边查询LEFT JOIN,交叉查询JOIN,交叉连接JOIN等join on left on 等多的是哦。sql多表查询语句与方法sql多表查询有很多种方法&#xff0c;如有自然连接 INNER JOIN,外边查询LEFT JOIN,交叉查询JOIN,交叉连接JOIN等…

php浏览服务器某一文件夹内容,php删除web服务器中指定目录下的指定格式的文件...

今天还在写VipSystem Pro的授权部分&#xff0c;用户授权后&#xff0c;生成匹配该用户的唯一的php文件集合(在一个目录下)&#xff0c;然后进行zip下所并弹出下载。这个临时生成的zip文件存放在我指定的一个目录。每个用户授权不同的功能&#xff0c;都会产生一个唯一的zip压缩…