PowerDesigner的操作经常忘记,所以把常用的功能记录下来备忘。

1、修改反转过来的字段

PowerDesigner从数据库反转的时候,默认不带注释,需要先进行修改。

输入如下脚本:

{OWNER, TABLE, S, COLUMN, DTTPCODE, LENGTH, SIZE, PREC, COMPUTE, NOTNULL, IDENTITY, DOMAIN, DEFAULT, COMMENT, ExtIdentityIncrement, ExtIdentitySeed}

select
u.name,
o.name,
c.colid,
c.name,
case when (s.usertype < 100) then s.name else x.name end,
c.prec,
c.length,
c.scale,
z.text ,
case (c.status & 8) when 8 then 'NULL' else 'NOTNULL' end,
case (c.status & 128) when 128 then 'identity' else '' end,
case when (s.usertype < 100) then '' else s.name end,
v.text,
CONVERT(varchar, ISNULL(p.[value], '')) AS text,
case (c.status & 128) when 128 then ident_incr(u.name + '.' + o.name) else null end,
case (c.status & 128) when 128 then ident_seed(u.name + '.' + o.name) else null end
from
dbo.sysusers u
join dbo.sysobjects o on (o.uid = u.uid and o.type in ('U', 'S', 'V'))
join dbo.syscolumns c on (c.id = o.id)
left outer join sys.extended_properties p on c.id = p.major_id and c.colid = p.minor_id
left outer join dbo.systypes s on (c.usertype = s.usertype and s.xtype = c.xtype and c.usertype >= 0)
left outer join dbo.systypes x on (s.usertype > 100 and s.xtype = x.xtype and x.usertype not in (0, 18, 80) and x.usertype < 100)
left outer join dbo.syscomments z on (z.id = o.id and z.number = c.colid)
left outer join dbo.sysobjects d on (d.id = c.cdefault and d.category <> 0)
left outer join dbo.syscomments v on (v.id = d.id)
where 1 = 1
[ and u.name = %.q:OWNER%]
[ and o.name=%.q:TABLE%]
order by 1, 2, 3

2、配置PowerDesigner数据库连接

下一步,点击“完成”——“测试数据库”——返回OK。

3、新建物理数据模型

点击“OK”后,将会开始进行反转PD字典工作。

PowerDesigner设计时表显示注释选项: 选定编辑的表,右键- >Properties- >Columns- >Customize Columns and Filter(或直接用快捷键Ctrl+U)- >Comment(前面打勾)- >OK

如果出现错误“[Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句。 SQLSTATE = 37000”

解决办法:选择菜单栏中的Database -> Change Current DBMS ,给DBMS选择SQL Server2005。

PowerDesigner常用快捷键

一般快捷键


F4   打开检查模型窗口,检查模型
F5   如果图窗口内的图改变过大小,恢复为原有大小即正常大小
F6   放大图窗口内的图
F7   缩小图窗口内的图
F8   在图窗口内中查看全部图内容
F9   预览图窗口
F10   在图窗口中以一幅视图的高度显示图Shift+单击对象   连续选择对象

alt+0   显示或隐藏浏览器窗口
alt+1   显示或隐藏输出窗口
alt+2   显示或隐藏结果列表窗口
ctrl+双击或ctrl+"+"     打开包图
ctrl+tab   在图窗口中切换大小,在文本中插入制表符或   在属性表窗口中切换标签页
ctrl+page up/page down 在属性表标签页中切换标签页
ctrl+移动窗口   禁止Docking特性
ctrl+b   在浏览器窗口中查找对象
ctrl+d   打开选择图窗口,选择图
ctrl+e   打开报表列表窗口
ctrl+f   打开查找对象窗口,查找对象
ctrl+j   在对象符号中调整文本
ctrl+F4   关闭当前图窗口
ctrl+alt+F4   关闭模型
ctrl+F6   在多个属性表窗口间切换
ctrl+shift+F6   在多个属性表窗口间反向切换
ctrl+u   回到父图
shift+F2   打开Workspace
shift+F3   保存Workspace
shift+F4   关闭Workspace

对象操作快捷键表

Del   删除对象(需确认)
shift+Del   删除对象(无需确认)
alt+Enter   打开所选对象的属性表
ctrl+k   粘贴为快捷方式
ctrl+h   选择连接:水平连接
ctrl+l   选择连接:垂直连接
ctrl+改变大小   保持对象的中心改变对象大小
ctrl+shift+改变大小 保持对象的中心改变对象大小,并保持与原对象的长宽比例

工具面板快捷键表

双击光标工具(Point)
选择图中的所有符号或ctrl+a  
双击删除工具(Delete) 删除所有已选择的符号(需确认)
双击移动工具(Grabber) 显示全局视图双击对象工具  
选择同类型的所有符号shift+双击对象工具 保持前一个选择,添加选择同类型的所有符号

拖放快捷键表

shift+移动项   移动符号
ctrl+移动项   复制符号
ctrl+shift+移动项 创建快捷方式列表窗口快捷键表
F2   选择编辑的文本
ctrl+shift+Space 选择当前行
ctrl+a   选择所有行
ctrl+shift+a   取消所有选择
ctrl+n或ctrl+i   插入行
ctrl+d   删除行

浏览器窗口快捷键表

*(小键盘)   展开活动浏览器中的所有节点
+(小键盘)   展开活动浏览器中的子节点
-(小键盘)   合拢活动浏览器中的所有节点
F2   重命名
ctrl+shift+f   在图中查找选择的对象

powerdesigner15显示注释

Tools->Display
Preferences->Content->Table->Advanced...->Columns->select
选中Code后,将它上移到第一位

这样可以将code、name、type三项显示在ER图中,然后运行脚本,将注释comment的内容替换到code或name中,即可。
 执行如下脚本:
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

扩展:PowerDesigner导出表到word

PowerDesigner从Sqlserver中反转为带注释的字典及快捷键操作的更多相关文章

  1. ThinkPHP中RBAC权限带菜单栏显示和详细权限操作

    RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...

  2. SqlServer中创建Oracle连接服务器

    转自太祖元年的:http://www.cnblogs.com/jirglt/archive/2012/06/10/2544025.html参考:http://down.51cto.com/data/9 ...

  3. SqlServer中创建Oracle链接服务器

    SqlServer中创建Oracle链接服务器 第一种:界面操作 (1)展开服务器对象-->链接服务器-->右击“新建链接服务器” (2)输入链接服务器的IP (3)链接成功后 第二种:语 ...

  4. PowerDesigner从SqlServer数据库中导入实体模型

    PowerDesigner从SqlServer数据库中导入实体模型 时间 2013-06-28 10:26:34 CSDN博客 原文  http://blog.csdn.net/sxycxwb/art ...

  5. SQLServer之数据库表转化为实体类【带注释】

    1.在开发过程中,有时候需要将数据库表转化为实体类.手敲除了不方便,还容易出错.本着DRY+懒人原则,参考了一位老司机的博客[见底部],并在其基础上进行了优化.[原先是不带注释的] DECLARE @ ...

  6. SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

    SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...

  7. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

  8. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  9. Sqlserver中存储过程,触发器,自定义函数

    Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...

随机推荐

  1. 2016/12/31_Python

    今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...

  2. 【开发软件】 在Mac下配置php开发环境:Apache+php+MySql

    本文地址 原文地址   本文提纲: 1. 启动Apache 2. 运行PHP 3. 配置Mysql 4. 使用PHPMyAdmin 5. 附录   有问题请先 看最后的附录   摘要: 系统OS X ...

  3. 5.2 Array类型的方法汇总

    所有对象都具有toString(),toLocaleString(),valueOf()方法. 1.数组转化为字符串 toString(),toLocaleString() ,数组调用这些方法,则返回 ...

  4. Android中Activity运行时屏幕方向与显示方式详解

    现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...

  5. Linux模块编程框架

    Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable ...

  6. 从myeclipse导入eclipse,不能识别为web项目(java项目转为web项目)

    1.进入项目目录,找到.project文件,打开. 2.找到<natures>...</natures>代码段. 3.在第2步的代码段中加入如下标签内容并保存:         ...

  7. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  8. 警告: [unchecked] 对作为原始类型IScheme的成员的write(TProt ocol,T)的调用未经过检查

    jdk 从8 改成了7 就好了! 或者, 修改源码, 每个响应的地方加上 surppressingWarnings xxx , 或者使用 请使用 -Xlint:unchecked 重新编译. 参照 h ...

  9. VirtualBox 桥接上网方式的配置

    最近在搞Redis所以装了个virtualbox的ubuntu的虚拟机, redis不是在ubuntu上. 因为需要使用本机客户端访问redis服务,所以需要配置虚拟机和本地机器的双向访问,所以就用到 ...

  10. C#设计模式-责任链模式

    在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准,所以在面试的 ...