数据库表结构转成设计书,PowerDesigner 表格导出为excel

数据库中的表导入到PowerDesigner中并转为excel文档

1、打开PowerDesigner12,在菜单中按照如下方式进行操作

file->Reverse Engineer->DataBase

点击后,弹出 New Physical Data Model 的对话框

2、在General选项卡中

Model name:模板名字,自己命名。

DMBMS    :根据需要选择,我选择的是ORACLEVersion 10g

点确定后弹出 Database Reverse Engineering Option 对话框

3  Selection选项卡中,选中Using a data source选项

注意如果是第一次导入数据,需要你先自己配制ODBC数据源,方法如下:

1)点击 下面 右侧的数据库 连接按钮,弹出 Connect to a Data Source 的对话框

2)选中 ODBC machine data source 选项,点击 Modify按钮右边的 Configure 按钮   弹出Configure Data Connections

3)在 ODBC Machine Data Sources选项卡   下面的工具栏中点击 第二个 数据库 配置按钮(Add Data Source(Ctrl+N)) 弹出创建新数据源窗口 ,选择文件数据源,    选择相应的数据源驱动程序(我选Oracle),点下一步(Modify),给数据源起个名字,选择服务器,下一步,输入相应的密码

配置完毕 后 点击确定

4,选择刚刚配置的数据源,输入相应的用户名和密码   即可。

=====得到PDM物理设计说明书

选中tables
ctrl + shift +x 然后运行脚本

  1 ‘******************************************************************************
  2 Option Explicit
  3    Dim rowsNum
  4    rowsNum = 0
  5 ‘-----------------------------------------------------------------------------
  6 ‘ Main function
  7 ‘-----------------------------------------------------------------------------
  8 ‘ Get the current active model
  9     Dim Model
 10     Set Model = ActiveModel
 11     If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
 12        MsgBox "The current model is not an PDM model."
 13     Else
 14       ‘ Get the tables collection
 15       ‘创建EXCEL APP
 16       dim beginrow
 17       DIM EXCEL, SHEET, SHEETLIST
 18       set EXCEL = CREATEOBJECT("Excel.Application")
 19       EXCEL.workbooks.add(-4167)‘添加工作表
 20       EXCEL.workbooks(1).sheets(1).name ="表结构"
 21       set SHEET = EXCEL.workbooks(1).sheets("表结构")
 22
 23       EXCEL.workbooks(1).sheets.add
 24       EXCEL.workbooks(1).sheets(1).name ="目录"
 25       set SHEETLIST = EXCEL.workbooks(1).sheets("目录")
 26       ShowTableList Model,SHEETLIST
 27
 28       ShowProperties Model, SHEET,SHEETLIST
 29
 30
 31       EXCEL.workbooks(1).Sheets(2).Select
 32       EXCEL.visible = true
 33       ‘设置列宽和自动换行
 34       sheet.Columns(1).ColumnWidth = 20
 35       sheet.Columns(2).ColumnWidth = 20
 36       sheet.Columns(3).ColumnWidth = 20
 37       sheet.Columns(4).ColumnWidth = 40
 38       sheet.Columns(5).ColumnWidth = 10
 39       sheet.Columns(6).ColumnWidth = 10
 40       sheet.Columns(1).WrapText =true
 41       sheet.Columns(2).WrapText =true
 42       sheet.Columns(4).WrapText =true
 43       ‘不显示网格线
 44       EXCEL.ActiveWindow.DisplayGridlines = False
 45
 46
 47  End If
 48 ‘-----------------------------------------------------------------------------
 49 ‘ Show properties of tables
 50 ‘-----------------------------------------------------------------------------
 51 Sub ShowProperties(mdl, sheet,SheetList)
 52    ‘ Show tables of the current model/package
 53    rowsNum=0
 54    beginrow = rowsNum+1
 55    Dim rowIndex
 56    rowIndex=3
 57    ‘ For each table
 58    output "begin"
 59    Dim tab
 60    For Each tab In mdl.tables
 61       ShowTable tab,sheet,rowIndex,sheetList
 62       rowIndex = rowIndex +1
 63    Next
 64    if mdl.tables.count > 0 then
 65         sheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Group
 66    end if
 67    output "end"
 68 End Sub
 69 ‘-----------------------------------------------------------------------------
 70 ‘ Show table properties
 71 ‘-----------------------------------------------------------------------------
 72 Sub ShowTable(tab, sheet,rowIndex,sheetList)
 73    If IsObject(tab) Then
 74      Dim rangFlag
 75      rowsNum = rowsNum + 1
 76       ‘ Show properties
 77       Output "================================"
 78       sheet.cells(rowsNum, 1) =tab.name
 79       sheet.cells(rowsNum, 1).HorizontalAlignment=3
 80       sheet.cells(rowsNum, 2) = tab.code
 81       ‘sheet.cells(rowsNum, 5).HorizontalAlignment=3
 82       ‘sheet.cells(rowsNum, 6) = ""
 83       ‘sheet.cells(rowsNum, 7) = "表说明"
 84       sheet.cells(rowsNum, 3) = tab.comment
 85       ‘sheet.cells(rowsNum, 8).HorizontalAlignment=3
 86       sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge
 87       ‘设置超链接,从目录点击表名去查看表结构
 88       ‘字段中文名    字段英文名    字段类型    注释    是否主键    是否非空    默认值
 89       sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表结构"&"!B"&rowsNum
 90       rowsNum = rowsNum + 1
 91       sheet.cells(rowsNum, 1) = "字段中文名"
 92       sheet.cells(rowsNum, 2) = "字段英文名"
 93       sheet.cells(rowsNum, 3) = "字段类型"
 94       sheet.cells(rowsNum, 4) = "注释"
 95       sheet.cells(rowsNum, 5) = "是否主键"
 96       sheet.cells(rowsNum, 6) = "是否非空"
 97       sheet.cells(rowsNum, 7) = "默认值"
 98       ‘设置边框
 99       sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"
100       ‘sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"
101       ‘字体为10号
102       sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10
103             Dim col ‘ running column
104             Dim colsNum
105             colsNum = 0
106       for each col in tab.columns
107         rowsNum = rowsNum + 1
108         colsNum = colsNum + 1
109           sheet.cells(rowsNum, 1) = col.name
110         ‘sheet.cells(rowsNum, 3) = ""
111           ‘sheet.cells(rowsNum, 4) = col.name
112           sheet.cells(rowsNum, 2) = col.code
113           sheet.cells(rowsNum, 3) = col.datatype
114         sheet.cells(rowsNum, 4) = col.comment
115           If col.Primary = true Then
116         sheet.cells(rowsNum, 5) = "Y"
117         Else
118         sheet.cells(rowsNum, 5) = " "
119         End If
120         If col.Mandatory = true Then
121         sheet.cells(rowsNum, 6) = "Y"
122         Else
123         sheet.cells(rowsNum, 6) = " "
124         End If
125         sheet.cells(rowsNum, 7) =  col.defaultvalue
126       next
127       sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3"
128       ‘sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"
129       sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10
130       rowsNum = rowsNum + 2
131
132       Output "FullDescription: "       + tab.Name
133    End If
134
135 End Sub
136 ‘-----------------------------------------------------------------------------
137 ‘ Show List Of Table
138 ‘-----------------------------------------------------------------------------
139 Sub ShowTableList(mdl, SheetList)
140    ‘ Show tables of the current model/package
141    Dim rowsNo
142    rowsNo=1
143    ‘ For each table
144    output "begin"
145    SheetList.cells(rowsNo, 1) = "主题"
146    SheetList.cells(rowsNo, 2) = "表中文名"
147    SheetList.cells(rowsNo, 3) = "表英文名"
148    SheetList.cells(rowsNo, 4) = "表说明"
149    rowsNo = rowsNo + 1
150    SheetList.cells(rowsNo, 1) = mdl.name
151    Dim tab
152    For Each tab In mdl.tables
153      If IsObject(tab) Then
154          rowsNo = rowsNo + 1
155       SheetList.cells(rowsNo, 1) = ""
156       SheetList.cells(rowsNo, 2) = tab.name
157       SheetList.cells(rowsNo, 3) = tab.code
158       SheetList.cells(rowsNo, 4) = tab.comment
159      End If
160    Next
161     SheetList.Columns(1).ColumnWidth = 20
162       SheetList.Columns(2).ColumnWidth = 20
163       SheetList.Columns(3).ColumnWidth = 30
164      SheetList.Columns(4).ColumnWidth = 60
165    output "end"
166 End Sub

该代码为宏代码

参考:

https://blog.csdn.net/a824444865/article/details/50072655

https://www.cnblogs.com/gaocong/p/6553080.html

原文地址:https://www.cnblogs.com/shangshen/p/10062285.html

时间: 2024-07-31 05:31:17

数据库表结构转成设计书,PowerDesigner 表格导出为excel的相关文章

PowerDesigner 表格导出为excel

选中tablesctrl + shift +x 然后运行脚本 '****************************************************************************** Option Explicit Dim rowsNum rowsNum = 0 '----------------------------------------------------------------------------- ' Main function '---

请设计一套图书馆借书管理系统的数据库表结构

请设计一套图书馆借书管理系统的数据库表结构:可以记录基本的用户信息.图书信息.借还书信息:数据表的个数不超过6个:请画表格描述表结构(需要说明每个字段的字段名.字段类型.字段含义描述): 在数据库设计中应: 1.保证每个用户的唯一性: 2.保证每种图书的唯一性:每种图书对应不等本数的多本图书:保证每本图书的唯一性: 3.借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限: 4.保证借书信息表与用户表.图书信息表之间的参照完整性: 5.限制每个用户最大可借书的本数 6.若有新用户注册或新书入

不同数据库表结构的转化,PowerDesigner的使用教程

通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库之间的转换方式.在学习转换之前先认识几个概念. 概念模型:对数据和信息进行建模,利用实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性. 逻辑数据模型 (LDM):逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的

关系型数据库表结构的两个设计技巧

By良少http://blog.csdn.net/shendl 关系型数据库表结构的设计,有下面两个设计技巧: 物理主键作为关联的外键 关系型数据库,由多个数据表构成.每一个数据表的结构是相同的,不同表之间可能存在关联关系.表之间的关联关系,正是关系型数据库得名的原因. 一个表由多个字段构成.其中可能有多个字段适合作为主键.主键字段,就是表中每一行都不会有重复数据的字段. 主键,可以分为两种:物理主键和逻辑主键. 每一张数据库的表,都使用自增长的id字段作为物理主键. 多表之间的外键关联,都关联

FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)

关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v 数据行业发展的很快,很多一起做BI的朋友都已转入大数据.云计算.人工智能等高大上的领域去了,而我还停留在原地做BI,导致能一起讨论问题的人越来越少,我还有太多BI领域的知识不会,需要深入学习,只好一个人慢慢前行一点一点的去学. 在做BI实施的

关系型数据库表结构设计规范-浅谈(转)

数据库表结构设计规范-浅谈,为啥是浅谈呢,因为主要的观点还是来自原微信公共账号的一篇文章,稍微加了一些自己的看法. 谁来进行数据库的设计? 肯定是具体的开发工程师来进行,开发同学的话,第一业务熟悉度比较高,第二结合OO和ORM的思想,能有比较好的运用关系型数据库的特性.如果是DBA同学的话,虽然对于数据库本身了解比较多,但是对于业务了解较少,很难有比较客观的设计.但是业务上线或者运行期间,需要DBA同学能够重度的加入进来,针对一些性能点和不合理的点进行优化,同事也可以在上线前,针对SQL进行re

OSSIM主要数据库表结构

OSSIM主要数据库表结构 对于从事OSSIM开发的技术人员,最主要的需要知道OSSIM库里的多种表结构,下面举几个典型事例: /* ======== config表 ======== */ DROP TABLE IF EXISTS conf; CREATE TABLE conf ( recovery        int NOT NULL, threshold       int NOT NULL, graph_threshold int NOT NULL, bar_length_left i

Activiti数据库表结构(表详细版)

http://blog.csdn.net/hj7jay/article/details/51302829 1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头. 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配. u  ACT_GE_* : “GE”代表“General”(通用),用在各种情况下: u  ACT_HI_* : “HI”代表“History”(历史)

activiti数据库表结构全貌解析

下面本人介绍一些activiti这款开源流程设计引擎的数据库表结构,首先阐述:我们刚开始接触或者使用一个新的东西(技术)时我们首先多问一下自己几个为什么?为什么activiti在工作流程领域这么流行呢?仅仅是因为开源么?实现如此强大的流程引擎,activiti底层设计是如何进行的?activiti中依赖哪些技术等?这些可能应该是那些刚接触这个开源流程引擎产品的人应该有的疑问.我们在用开源产品的都是其实应该多问自己为什么?这样才能有所进步,不是么?兴许你一时兴起,“起笔”就把一款属于你自己的开源作