如何进行数据库,比如ORACLE,SQL SERVER的逆向工程,将数据库导入到PowerDesigner中
- 格式:docx
- 大小:50.21 KB
- 文档页数:3
反向读取Mysql数据库表结构到PowerDesigner中使⽤PowerDesigner挺长时间了,只是⼀些简单的表结构设计,因需要对当前数据库进⾏再设计,需要看⼀下数据库中所有的表,及表之间的关系,并重新修改表结构,因此需求就是怎么把数据库中的表结构反向⽣成到PowerDesigner中,以下是对该过程的实践,当前也搜索了其他同学的⽅法,便于后期使⽤即其他同学需要,整理该⽂章。
⼀、⾸先确认⼀下版本和环境Mysql使⽤的版本(我⽤的是5.1)PowerDesigner是32位还是64位程序Windows10或Windows7(这个影响不⼤)⼆、下载驱动⽂件并配置2. 安装下载的驱动⽂件,我下载的是MSI,不是ZIP压缩包。
Custom为⾃定义安装,我选择的是默认安装,可根据需要选择安装路径。
点击【install】开始安装【finish】安装完成。
3. 配置ODBC驱动连接打开控制⾯板,并找到管理⼯具选项;双击管理⼯具会看到如下页⾯;双击ODBC数据源(32位),到如下页⾯;点击添加,弹出如下窗⼝;找到需要的版本驱动,点击【完成】会弹出如下页⾯,Data Source Name:要建⽴连接的名称,下⾯是描述,再下⾯是Mysql数据库的机器IP和端⼝号,填写⽤户名和密码,下拉选择需要连接的数据库,点击【Test】检查是否连接成功。
点击【OK】完成。
会看到添加的那个数据源,如下图所⽰。
三、PowerDesigner连接数据库并加载表结构1. 打开PowerDesigner,File->ReverseEngineer->Database2. 取个模块名称3. 点击下图⼩按钮,加载前⾯配置好的数据源。
4. 下拉选择,配置的数据源,⽤户名密码会⾃动填充,点击【Connect】.5. 上⾯点击【Connect】,再点击3步骤页⾯的确定,就能看到如下页⾯了。
6. 设置好你要查看的数据库的表,点击OK就能看到你熟悉的结构了。
将数据库中的表导入到PowerDesigner中并转为excel文档1、打开PowerDesigner12,在菜单中按照如下方式进行操作file->Reverse Engineer->DataBase点击后,弹出 New Physical Data Model 的对话框2、在General选项卡中Model name:模板名字,自己命名。
DMBMS :根据需要选择,我选择的是ORACLE Version 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 Connections3)在 ODBC Machine Data Sources选项卡下面的工具栏中点击第二个数据库配置按钮(Add Data Source(Ctrl+N)) 弹出创建新数据源窗口,选择文件数据源,选择相应的数据源驱动程序(我选Oracle),点下一步(Modify),给数据源起个名字,选择服务器,下一步,输入相应的密码配置完毕后点击确定4,选择刚刚配置的数据源,输入相应的用户名和密码即可。
、选择需要导入的表powerDesigner生成excel版本的数据库文件在PowerDesigner中,shift+ctrl+X,打开脚本运行,脚本如下:'******************************************************************** **********'* File: pdm2excel.txt'* Title: pdm export to excel'* Purpose: To export the tables and columns to Excel'* Model: Physical Data Model'* Objects: Table, Column, View'* Author: ziyan'* Created: 2012-05-03'* Version: 1.0'******************************************************************** **********Option ExplicitDim rowsNumrowsNum = 0'-----------------------------------------------------------------------------' Main function'-----------------------------------------------------------------------------' Get the current active modelDim ModelSet Model = ActiveModelIf (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then MsgBox "The current model is not an PDM model."Else' Get the tables collection'创建EXCEL APPdim beginrowDIM EXCEL, SHEETset EXCEL = CREATEOBJECT("Excel.Application")EXCEL.workbooks.add(-4167)'添加工作表EXCEL.workbooks(1).sheets(1).name ="test"set sheet = EXCEL.workbooks(1).sheets("test")ShowProperties Model, SHEETEXCEL.visible = true'设置列宽和自动换行sheet.Columns(1).ColumnWidth = 20sheet.Columns(2).ColumnWidth = 40sheet.Columns(4).ColumnWidth = 20sheet.Columns(5).ColumnWidth = 20sheet.Columns(6).ColumnWidth = 15sheet.Columns(7).ColumnWidth = 10sheet.Columns(8).ColumnWidth = 10sheet.Columns(9).ColumnWidth = 10sheet.Columns(1).WrapText =truesheet.Columns(2).WrapText =truesheet.Columns(4).WrapText =trueEnd If'-----------------------------------------------------------------------------' Show properties of tables'-----------------------------------------------------------------------------Sub ShowProperties(mdl, sheet)' Show tables of the current model/packagerowsNum=0beginrow = rowsNum+1' For each tableoutput "begin"Dim tabFor Each tab In mdl.tablesShowTable tab,sheetNextif mdl.tables.count > 0 thensheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Groupend ifoutput "end"End Sub'-----------------------------------------------------------------------------' Show table properties'-----------------------------------------------------------------------------Sub ShowTable(tab, sheet)If IsObject(tab) ThenDim rangFlagrowsNum = rowsNum + 1' Show propertiesOutput "================================"sheet.cells(rowsNum, 1) = "实体名"sheet.cells(rowsNum, 2) =sheet.cells(rowsNum, 3) = ""sheet.cells(rowsNum, 4) = "表名"sheet.cells(rowsNum, 5) = tab.codesheet.Range(sheet.cells(rowsNum, 5),sheet.cells(rowsNum, 9)).MergerowsNum = 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.cells(rowsNum, 8) = "是否外键"sheet.cells(rowsNum, 9) = "是否必填"'设置边框sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 2)).Borders.LineStyle = "1"sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"Dim col ' running columnDim colsNumcolsNum = 0for each col in tab.columnsrowsNum = rowsNum + 1colsNum = colsNum + 1sheet.cells(rowsNum, 1) = sheet.cells(rowsNum, 2) = mentsheet.cells(rowsNum, 3) = ""sheet.cells(rowsNum, 4) = sheet.cells(rowsNum, 5) = col.codesheet.cells(rowsNum, 6) = col.datatypesheet.cells(rowsNum, 7) = col.primarysheet.cells(rowsNum, 8) = col.foreignkeysheet.cells(rowsNum, 9) = col.mandatorynextsheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,2)). Borders.LineStyle = "2"sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)). Borders.LineStyle = "2"rowsNum = rowsNum + 1Output "FullDescription: " + End IfEnd Sub。
用PowerDesigner反向工程来导处数据模型图
以powerdesigner15 和Gracle11g为例,其它版本大同小异。
基本步骤如下:
1.新建物理模型文件
打开或新建一个PhysicalDataModel文件(.pdm)
在对话框中选择PhysicalData,取一个模型名(如ScottData),在下拉列表框中选择对应数据库的版本。
2.配置数据库连接
菜单项Database->Configure Connections
添加数据源Scott_Data
输入Data Source Name(数据源名称,随便取一个就行,比如Scott_Data) ,选择Service Name (就是你要连接的数据库的网络服务名) ,UserID填入用户名Scott,点TestConnection,在对话框中输入用户名和口令,测试连接。
3.生成数据物理模型
.Database->Update Model from Database
在对话框中选Selection选项,在下拉框中是刚才配好的数据源
点击确定->一个连接输入框,输入User Name 和Password 点击connect。
出现表格的列表,选择需要导出的表->点OK。
数据表比较多而且负责的话,就慢慢等吧。
PowerDesigner15在win7-64位系统下对MySQL 进行反向工程1、安装PowerDesigner15、MySQL5.不详细讲解了。
网上一大把。
请各位亲参考去。
2、安MyODBC-standard-3.51.0.7-win.msi、mysql-connector-odbc-5.1.5-win.msi两个文件。
可以支持odbc在win7下创建连接。
3、安装好之后,最好重新启动系统。
不要试图在win7控制面板内找到odbc创建,那里面没能把你刚才装的支持mysql的驱动列出来,所以要去,C:\Windows\SysWOW64目录下找到odbcad32.exe这个文件,并打开。
4、选择系统dns,之后添加。
5、选择MySQL ODBC5.1 Driver 。
完成。
6、输入您数据库连接信息,以及选择你要反向工程的数据库名。
7、打开PowerDesigner8、在工作空间下新建物理数据模型。
DBMS选择MySQL5.09、选择数据库菜单下的Connect。
10、把刚刚建立的ODBC连接选中,输入相应信息。
连接。
11、选择数据库菜单下的Updata Model from Database...12、选择Using a data source,确定。
13、在Database Reverse Engineering中选择你需要反向的具体表。
14、处理中。
15、反向成功。
结果页面。
通过已有物理模型,得到SQL建表语句。
1、选择数据库菜单下的Generate Database...2、切换到Preview标签下。
即可得到SQL语句。
拷贝别的mysql5下的数据库到本机中程序。
1、通过控制面板中的程序停止掉mysql运行的进程。
2、拷贝Mysql5/data目录下的相应表目录和ibdata1文件进入到本机相应的目录。
3、启动mysql进程。
4、使用相关工具即可连接进入查看到具体数据。
需要用到power builder工具,具体操作方法如下:先打开PB,新建workspace,如图:起好名字之后,可以看到新的workspace已经建成了:点击tools-database painter,如图:之后会出现如下界面:点击ODB ODBC 添加相应数据源,如图:在出现的对话框中,选择“用户数据源”或“系统数据源”,下一步,如图:选择数据源类型,下一步:数据源的名称起相应的数据库名即可(也可以随便起),服务器名localhost,下一步,如图:登录方式,默认,或者选择sql登录方式都可以:默认数据库选择目标数据库,下一步:默认点击完成:至此,sqlserver数据源创建完成。
Oracle数据源的创建方法——数据源类型同上:驱动程序二选一:数据源名字随意,TNS Service Name选择目标oracle数据库,User id为相应用户名。
点击“OK”,oracle的数据源也创建完成。
数据源创建完成之后,要在ODB ODBC下创建profile,如下:Profile name直接用数据库的名字命名就可以,数据源分别选择刚刚创建的sqlserver和oracle 数据源,用户名密码作相应输入,两个profile的创建就完成了。
Sqlserver和oracle之间的数据互联要在application中进行,在workspace中新建target,在target选项卡下,选择application,OK:名字随意,finish:完成之后,继续在创建完成后的application右键,New:在出现的对话框中选择Database-Data Pipeline:选好源数据和目标数据,OK:在出现的对话框中,PB会将数据库中所有的表列出:选择相应的表,PB会进一步将表中所含的列列出:选择好了表,以及要导入的列后,OK:这样就可以做数据的互导工作了。
注意:对于到导入到oracle中的数据,在sqlserver中为float类型的,在oracle中要改为number,在sqlserver中为char类型的,在oracle中要改为varchar类型。
PowerDesigner反向⼯程,根据Oracle数据库结构⽣成ER图
(2014-3-25记)
01.添加数据服务端
02. PowerDesigner
1、新建PDM:
选择菜单File->New Model,【Model type】选择Physical Data Model,【DBMS】选择“ORACLE Version 10g”。
2、选择DataBase->Configure Connections,点击“Add Data Source”。
3、选择“系统数据源”—“下⼀步”。
4、选择Oracle in OraDb10g_home1。
5、选择01步骤配置好的服务端
6、点击“Test Connection”输⼊数据库⽤户和密码,点击OK,显⽰Connection successful就说明链接成功。
7、点击OK保存。
8、之后会显⽰出“mySource”
9、选择菜单【Database】—【Update Model from Database】,选择【Using a data source】,点击右侧的选择按钮。
10、选择【ODBC machine data source】,下拉菜单中选择刚才配置好的数据源,填好登录数据库⽤户名【User ID】和密码【Password】,点击【Connect】。
11、选择相应的⽤户,可选择⽤户下的数据表⽣成ER
注: PowerDesigner安装⽬录不能有空格,否则会报错:“[Oracle][ODBC][Ora]ORA-12154:TNS:⽆法解析指定的连接标⽰符”。
powerdesign12PDM导出带有字段说明的sql及逆向⼯程导⼊字段说明⼀、从PDM导出带有字段说明的sql⽂件 1、新建DBMS2、点击新建3、输⼊新建DBMS的名称,并选择拷贝源为Miscrosoft SQL Server2005。
4、点击保存后弹出如下窗⼝ 5、选择左侧树节点 Script-->Objects-->Column-->ColumnComment,设置其值为EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'%Name%',@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'%TABLE%', @level2type=N'column', @level2name=N'%COLUMN%'说明:该字段是为了导出符合Sqlserver2005字段说明的模板,%%为变量,不可修改,其它可视情况变更。
6、选择左侧树节点 Script-->Objects-->Table-->TableComment,去掉其值内容。
说明:因为我的例⼦中不需要表说明。
7、点击确定,返回上层并关闭设置DBMS窗⼝。
8、新建PDM ,选择DBMS为刚才新建的SQLSERVER2005[EXT]. 9、新建⼀张表,并定义字段说明。
10、选择⽣成数据库,就得到sql脚本了。
11、把这段脚本放在SQLSERVER2005中执⾏就能得到带有字段说明的表了。
⼆、逆向⼯程导⼊字段说明 1、新建⼀个PDM,选择DBMS为刚才定义好的SQLSERVER2005[EXT]。
使用owerDesigner逆向工程和oracl创建数据源完全解析(附图)针对64位powerdesigner 15 (涵盖32位)网上大部分都是片面的,解释不全或容易出现误区,此版本为本人亲自实践心得,忘对大家起到帮助。
一、前期准备工作1.Powerdesigner任意版本(这里我用到的是15针对11g);2.oracle数据库(这里我用到的是oracle11g/32位客户端)●如果你的是32位数据库,那没问题●如果你用的是64位数据库,必须下载oracle 32 位客户端。
下载地址如下/otn/nt/oracle11g/112010/win32_11gR 2_client.zip二、创建数据源1.要想让Powerdesigner跟oracle链接起来,必须的通过一个他们都能识别的odbc数据源,具体配置方法如下:选中【服务命名】后点击左侧的绿色加号图标,增加服务命名。
3.在【网络服务命名向导】中输入前台配置工具名称,例如helloworld,可以是任意名称只要与ODBC中配置对上就成,点击下一步。
默认是1521,点击下一步了完成测试,点击【更改登录】按钮的用户名和密码。
11.配置成功三、下面配置ODBC到Oracle1.下面配置ODBC到Oracle 命名服务的连接有2中方法:(一)此方法适用于32位数据库选择开始菜单,oracle客户端的【配置和移植工具】中的【Microsoft ODBC 管理员】,或者在运行窗口执%windir%\SysWOW64\odbcad32.exe(windows7)(二)此方法主要针对64位数据库进入【控制面板】【管理工具】【数据源(ODBC)】(此处注意在64位的操作系统,例如windows7(64位)中不能从这里进入,因为这里指向的是64位的ODBC配置,必须执行%windir%\SysWOW64\odbcad32.exe,才是32位的ODBC配置。
选ORACLE的【Microsoft ODBC 管理员】也是指向odbcad32.exe2.在【ODBC数据源管理器】对话框中点击【添加】3.在【创建新数据源】窗口中选择你安装的Oracle客户端驱动。
不同数据库表结构的转化,PowerDesigner的使⽤教程通过学习PowerDesigner⼯具,学习概念模型,物理模型,⾯向对象模型,业务模型,以及不同数据库表结构的转化。
通过案例给⼤家分享,sql server 2008r2 数据库和oracle数据库之间的转换⽅式。
在学习转换之前先认识⼏个概念。
概念模型:对数据和信息进⾏建模,利⽤实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性。
逻辑数据模型 (LDM):逻辑模型主要是使得整个概念模型更易于理解,同时⼜不依赖于具体的数据库实现,使⽤逻辑模型可以⽣成针对具体数据库管理系统的物理模型。
逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来⽣成物理模型。
物理模型:基于特定DBMS,在概念数据模型、逻辑数据模型的基础上进⾏设计。
由物理数据模型⽣成数据库,或对数据库进⾏逆向⼯程得到物理数据模型。
⾯向对象:包含UML常见的所有的图形:类图、对象图、包图、⽤例图、时序图、协作图、交互图、活动图、状态图、组件图、复合结构图、部署图(配置图)。
OOM 本质上是软件系统的⼀个静态的概念模型。
业务模型:BPM 描述业务的各种不同内在任务和内在流程,⽽且客户如何以这些任务和流程互相影响。
BPM 是从业务合伙⼈的观点来看业务逻辑和规则的概念模型,使⽤⼀个图表描述程序,流程,信息和合作协议之间的交互作⽤。
信息流模型(ILM):ILM是⼀个⾼层的信息流模型,主要⽤于分布式数据库之间的数据复制。
企业架构模型(EAM):从业务层、应⽤层以及技术层的对企业的体系架构进⾏全⽅⾯的描述。
包括:组织结构图、业务通信图、进程图、城市规划图、应⽤架构图、⾯向服务图、技术基础框架图。
案例:概念模型到物理模型转化如下图所⽰:案例:物理模型到概念模型的转化:案例:oracle与sqlserver数据库表之间的转换案例。
0、准备工作先在SQL Server中创建一数据库,以供测试用。
Create database test1、根据在PowerDesigner创建的数据模型创建表、触发器、存储过程到数据库中1)打开PowerDesigner ,建立一个物理数据模型2)在弹出的对话框中保持默认设置3)将新建的physical data model 重命名为test4)在其中建两个表,创建两个表的关联关系.5)单击"Database"->"Configure Connections"6)在弹出的ODBC数据源管理器中,点击"添加",添加一个数据源从上图可以看出,已经成功添加了一个名为test的sql server数据源.7)点击"Database"->"Connect..",连接到刚才添加的数据源.8)点击"Database"->"Generate Database",将表创建到数据库在上面的对话框中,可以选择生成脚本的目录和文件名,下面还有很多选项,我保持了默认选项.注意选中"Script generation",只生成脚本,选中"ODBC generation"会提示你执行脚本到数据库.点击Run可以运行脚本,也可手动修改脚本后再Run.Run了之后,再到数据库查看,发现表和表之间的关联关系已经创建了.2、将已有的数据库导出到PowerDesigner中为数据模型1)新建一个physical data model,命名为test22)点击"Database"->"Connect.."连接数据源。
3)点击"Database"->"Reverse Engineer Database..."4)Using an ODBC data source5)点击"确定"后,可以看到下面的对话框,选项的意思也很明了,默认只选中了导出表:6)"OK"之后可以看到导入滚动条,完成之后,可以看到数据库表已导入为数据模型。
Oracle的反向工程就是指将Oracle中的数据库,当然也可以是SQL Server中的数据库导入到PD中,这个需要建立一个数据库的链接,然后进行逆向工程的操作。
第一步:建立数据库的链接:
PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。
[Oracle 10G 版]
PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。
[SQL SERVER 2005版]
第二步:建立完数据库的连接后,在【File】--【Reverse Engineer】--【Database】
第三步:点击确定,如图所示:
第四步:如图所示:注意点,如果数据库中的表很多时,比如一万张表,这个操作耗费的时间很长,甚至把PD崩溃掉
选择你要导入的表,视图,以及表的对象,就可以将数据库导入到PD中,至此数据库的逆向工程便结束了。