1、背景

帮朋友弄下数据库设计,又用到PowerDesigner,因为还要数据库设计文档(word),还想着怎么把数据库结构导出呢,发现以前弄过,一键导出,很方便,分享下,祝好运!

2、解决方案

2.1 执行窗口

依次点击,Tools->Execute Commands ->Edit/Run Script

2.2 执行脚本

第一次执行,复制脚本到空白编辑处,点击三角执行按钮就可以了,执行完成后可以保存脚本,以便下次用,下次直接打开文件执行就可以了。

2.3 执行效果

(1)点击执行后,会首先生成临时excel文件。

(2)打开excel后,有两个sheet,一个sheet是表目录,内容为全部表名称及链接;一个sheet所有表结构信息;

2.4 脚本

'******************************************************************************
Option ExplicitDim rowsNumrowsNum = 0
'-----------------------------------------------------------------------------
' Main function
'-----------------------------------------------------------------------------
' Get the current active modelDim ModelSet Model = ActiveModelIf (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) ThenMsgBox "The current model is not an PDM model."Else' Get the tables collection'创建EXCEL APPdim beginrowDIM EXCEL, SHEET, SHEETLISTset EXCEL = CREATEOBJECT("Excel.Application")EXCEL.workbooks.add(-4167)'添加工作表EXCEL.workbooks(1).sheets(1).name ="表结构"set SHEET = EXCEL.workbooks(1).sheets("表结构")EXCEL.workbooks(1).sheets.addEXCEL.workbooks(1).sheets(1).name ="目录"set SHEETLIST = EXCEL.workbooks(1).sheets("目录")ShowTableList Model,SHEETLISTShowProperties Model, SHEET,SHEETLISTEXCEL.workbooks(1).Sheets(2).SelectEXCEL.visible = true'设置列宽和自动换行sheet.Columns(1).ColumnWidth = 20 sheet.Columns(2).ColumnWidth = 20 sheet.Columns(3).ColumnWidth = 20 sheet.Columns(4).ColumnWidth = 40 sheet.Columns(5).ColumnWidth = 10 sheet.Columns(6).ColumnWidth = 10 sheet.Columns(1).WrapText =truesheet.Columns(2).WrapText =truesheet.Columns(4).WrapText =true'不显示网格线EXCEL.ActiveWindow.DisplayGridlines = FalseEnd If
'-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl, sheet,SheetList)' Show tables of the current model/packagerowsNum=0beginrow = rowsNum+1Dim rowIndex rowIndex=3' For each tableoutput "begin"Dim tabFor Each tab In mdl.tablesShowTable tab,sheet,rowIndex,sheetListrowIndex = rowIndex +1Nextif mdl.tables.count > 0 thensheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Groupend ifoutput "end"
End Sub
'-----------------------------------------------------------------------------
' Show table properties
'-----------------------------------------------------------------------------
Sub ShowTable(tab, sheet,rowIndex,sheetList)If IsObject(tab) ThenDim rangFlagrowsNum = rowsNum + 1' Show propertiesOutput "================================"sheet.cells(rowsNum, 1) =tab.namesheet.cells(rowsNum, 1).HorizontalAlignment=3sheet.cells(rowsNum, 2) = tab.code'sheet.cells(rowsNum, 5).HorizontalAlignment=3'sheet.cells(rowsNum, 6) = ""'sheet.cells(rowsNum, 7) = "表说明"sheet.cells(rowsNum, 3) = tab.comment'sheet.cells(rowsNum, 8).HorizontalAlignment=3sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge'设置超链接,从目录点击表名去查看表结构'字段中文名    字段英文名    字段类型    注释    是否主键    是否非空    默认值sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表结构"&"!B"&rowsNumrowsNum = rowsNum + 1sheet.cells(rowsNum, 1) = "字段中文名"sheet.cells(rowsNum, 2) = "字段英文名"sheet.cells(rowsNum, 3) = "字段类型"sheet.cells(rowsNum, 4) = "注释"sheet.cells(rowsNum, 5) = "是否主键"sheet.cells(rowsNum, 6) = "是否非空"sheet.cells(rowsNum, 7) = "默认值"'设置边框sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"'字体为10号sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10Dim col ' running columnDim colsNumcolsNum = 0for each col in tab.columnsrowsNum = rowsNum + 1colsNum = colsNum + 1sheet.cells(rowsNum, 1) = col.name'sheet.cells(rowsNum, 3) = ""'sheet.cells(rowsNum, 4) = col.namesheet.cells(rowsNum, 2) = col.codesheet.cells(rowsNum, 3) = col.datatypesheet.cells(rowsNum, 4) = col.commentIf col.Primary = true Thensheet.cells(rowsNum, 5) = "Y" Elsesheet.cells(rowsNum, 5) = " " End IfIf col.Mandatory = true Thensheet.cells(rowsNum, 6) = "Y" Elsesheet.cells(rowsNum, 6) = " " End Ifsheet.cells(rowsNum, 7) =  col.defaultvaluenextsheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3"       'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10rowsNum = rowsNum + 2Output "FullDescription: "       + tab.NameEnd IfEnd Sub
'-----------------------------------------------------------------------------
' Show List Of Table
'-----------------------------------------------------------------------------
Sub ShowTableList(mdl, SheetList)' Show tables of the current model/packageDim rowsNorowsNo=1' For each tableoutput "begin"SheetList.cells(rowsNo, 1) = "主题"SheetList.cells(rowsNo, 2) = "表中文名"SheetList.cells(rowsNo, 3) = "表英文名"SheetList.cells(rowsNo, 4) = "表说明"rowsNo = rowsNo + 1SheetList.cells(rowsNo, 1) = mdl.nameDim tabFor Each tab In mdl.tablesIf IsObject(tab) ThenrowsNo = rowsNo + 1SheetList.cells(rowsNo, 1) = ""SheetList.cells(rowsNo, 2) = tab.nameSheetList.cells(rowsNo, 3) = tab.codeSheetList.cells(rowsNo, 4) = tab.commentEnd IfNextSheetList.Columns(1).ColumnWidth = 20 SheetList.Columns(2).ColumnWidth = 20 SheetList.Columns(3).ColumnWidth = 30 SheetList.Columns(4).ColumnWidth = 60 output "end"
End Sub

更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。

PowerDesigner一键导出数据库设计表结构相关推荐

  1. PowerDesigner一键导入数据库所有表并画数据模型图

    目录 一.首先导出目标数据库库所有表结构,获取.sql脚本 二.选择PowerDesigner-文件-反向工程-Database 三.选择Mysql 四.选择数据库脚本 五.导入成功 六.使用工具栏进 ...

  2. navicat 导出数据库的表结构

    navicat 导出数据库的表结构 (1)打开navicat for Mysql,点击页面上方的"new query" (2)在"SQL Editior"中写入 ...

  3. sybase数据库导出mysql_sybase导出数据库的表结构命令

    在不同平台上导数据时,只能用BCP命令,但是BCP命令不能导出数据库表结构,所以需进行数据库表结构的导出. 在sybase12.5版本以上,可以用如下方式导出表结构: ddlgen –Usa –Pxx ...

  4. oracle数据泵到处表结构,数据泵导出数据库所有表结构

    Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaov ...

  5. 使用Navicat将表设计导出数据库设计文档

    我们在写数据库设计文档的时候,会需要对数据库表进行设计的编写,手动写的话会很费时间费精力,尤其是如果有大量的表需要写的时候,就更加浪费时间了.下面就让我给大家讲一个简单方法. 我的是在Navicat中 ...

  6. 把数据库的表结构导出Excel格式

    把数据库的表结构导出Excel格式 话不多说先上代码! SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIM ...

  7. Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 W3C标准盒子模型和IE盒子模型的区别 Bootstrap4--新闻管理手机端页面 菜 ...

  8. 【mysql】mysql 导出全库表结构,并排除指定库

    作者:lianghc mysql 导出一般使用mysqldump,这个工具很灵活,可以根据需要导出全库数据,指定库数据.表结构,指定表数据.表结构,等等. 导出全库表结构 mysqldump -h 1 ...

  9. SQL巩固以及数据库、表结构优化

    SQL巩固&数据库.表结构优化 前言 对于初级程序开发工程师而言,SQL是很多人的弱项,为此我给大家来做一下总结,希望能够帮到你们. 课程说明 1.介绍项目实战开发过程中常用的MySQL函数及 ...

最新文章

  1. Liunx 重定向,管道符(转)
  2. 4接口引脚定义_浅谈USB Type-C接口
  3. java中国象棋网络对弈,java课程设计---中国象棋对弈系统
  4. oracle 随机数重复吗,Oracle生成不重复随机数
  5. CITRIX环境下无法打印原因方法
  6. 【VBA】excel多功能数据处理插件
  7. Java类的三大特性
  8. nginx正向代理反向代理负载均衡
  9. 小故事有大能量(爱情故事)
  10. C++ 中 _T 含义及用途
  11. 极海单片机串口调试记录
  12. LeetCode - 263 - Ugly Number
  13. 防伪热点:洪都拉斯推出钞票设计,暗示独立二百周年!
  14. XXE(xml外部实体攻击)
  15. 怎么写伪原创文章,可以自动生成么?
  16. 人生的要务:提高自己的思维层次
  17. 创维盒子T1-H2903_1+8G_安卓4.4.2_当贝桌面-刷机固件包
  18. 阿里云轻量级服务器安装docker
  19. 【小程序】免费版wifi共享,扫码即可连wifi
  20. 采集招标网所有招标数据

热门文章

  1. 瑞典皇家理工学院计算机学什么,瑞典皇家理工大学学科设置是怎样的?
  2. 计算机关机慢怎么解决方法,电脑关机很慢,详细教您win7电脑关机很慢的解决方法...
  3. 搞独立运动,万人如海一身藏
  4. LeetCode:183.Customers Who Never Order
  5. hdwiki php5.5,HDWiki 5.1 正式版推出 编辑器全新改版
  6. 1到100的和(C)
  7. c语言中ch1和ch2是什么意思,2020-05-26(C语言)1.将串str中所有值为ch1的字符转换成ch2的字符,如果str为空串,或者串中不含值为ch1的字符,则什么都不做.2.逆转函数...
  8. 浏览器劫持(病毒)事件处置
  9. 1.已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
  10. Win7 EFS 加密文件图解