本文主要介绍使用Navicat Premium 12导出SQL(使用MySQL数据库)文件,并在Power Designer 16.5中使用导出的SQL文件来生成物理模型的步骤。
1. 打开Navicat Premium,并连接上数据库,在要导出SQL文件的数据库中选中表,选择转储SQL文件,然后选择仅结构。
2. 在弹出的另存为对话框中选择要将SQL文件保存的目录,这里可以修改文件名称,选择好以后,点击保存按钮。
3. 打开Power Designer,点击File,选择Reverse Engineer,然后选择DataBase,如下图:

4. 在弹出的New physical Data Model对话框中,可以修改Model Name,选择DBMS,因为导出的是MySQL数据库,所以这里选择MySQL 5.0(注意版本),选择完成后,点击确定按钮,如下图:

5. 在Database Reverse Engineering Options对话框中,选择Using script files(前面的单选框选中),如下图所示:

6. 点击Using script files下方的Add Files按钮,如下图所示,红框中的图标按钮:

7. 在弹出的打开对话框中,选择第2步保存的SQL文件,点击打开按钮
8. 会有执行过程,如下图:

9. 完成后,即可看到生成结果了。
powerdesigner导出表设计结构到excel文件
链接:https://www.cnblogs.com/yanggb/p/14507874.html powerdesigner导出表设计结构到excel文件
在PowerDesigner界面按【ctrl+shift+x】快捷键,在弹出的窗口中拷贝入以下脚本并点击执行按钮就能导出生成excel文件:
'******************************************************************************Option ExplicitDim rowsNum,tablesNumrowsNum = 0tablesNum = 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,BOOK,SHEETLISTset EXCEL = CREATEOBJECT("Excel.Application")Set BOOK = EXCEL.Workbooks.Add(-4167) '新建工作簿BOOK.sheets(1).name ="目录"set SHEETLIST = BOOK.sheets("目录")ShowTableList Model,SHEETLISTShowProperties Model,BOOK,SHEETLISTMsgBox "导出完成!"End If'-----------------------------------------------------------------------------' Show properties of tables'-----------------------------------------------------------------------------Sub ShowProperties(mdl,BOOK,SheetList)' Show tables of the current model/packagerowsNum=0beginrow = rowsNum+1Dim rowIndexrowIndex=3' For each tableoutput "begin"Dim tabFor Each tab In mdl.tablestablesNum = tablesNum +1ShowTable tab,BOOK,rowIndex,sheetList,tablesNumrowIndex = rowIndex +1Nextif mdl.tables.count > 0 thenBOOK.Sheets(BOOK.Sheets.count).Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Groupend ifoutput "end"End Sub'-----------------------------------------------------------------------------' Show table properties'-----------------------------------------------------------------------------Sub ShowTable(tab, BOOK,rowIndex,sheetList,tablesNum)If IsObject(tab) ThenDim rangFlag,SHEET'EXCEL.workbooks.add(-4167)'添加工作表BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)BOOK.Sheets(BOOK.Sheets.count).Name = tab.codeset SHEET = BOOK.sheets(tab.code)'EXCEL.workbooks(1).sheets.add(-4167)EXCEL.workbooks(1).Sheets(tablesNum).SelectEXCEL.visible = true'设置列宽和自动换行sheet.Columns(1).ColumnWidth = 20sheet.Columns(2).ColumnWidth = 20sheet.Columns(3).ColumnWidth = 20sheet.Columns(4).ColumnWidth = 40sheet.Columns(5).ColumnWidth = 10sheet.Columns(6).ColumnWidth = 10sheet.Columns(1).WrapText =truesheet.Columns(2).WrapText =truesheet.Columns(4).WrapText =true'不显示网格线EXCEL.ActiveWindow.DisplayGridlines = FalserowsNum = 0rowsNum = rowsNum + 1' Show propertiesOutput "================================"sheet.cells(rowsNum, 1) ="返回目录"sheet.cells(rowsNum, 2) =tab.namesheet.cells(rowsNum, 2).HorizontalAlignment=3sheet.cells(rowsNum, 3) = tab.code'sheet.cells(rowsNum, 5).HorizontalAlignment=3'sheet.cells(rowsNum, 6) = ""'sheet.cells(rowsNum, 7) = "表说明"sheet.cells(rowsNum, 4) = tab.comment'sheet.cells(rowsNum, 8).HorizontalAlignment=3sheet.Range(sheet.cells(rowsNum, 4),sheet.cells(rowsNum, 7)).Merge'设置超链接,从目录点击表名去查看表结构'字段中文名 字段英文名 字段类型 注释 是否主键 是否非空 默认值sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "",tab.code&"!B"&rowsNumsheet.Hyperlinks.Add sheet.cells(rowsNum,1), "","目录"&"!B"&rowIndexrowsNum = 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 = 20SheetList.Columns(2).ColumnWidth = 20SheetList.Columns(3).ColumnWidth = 30SheetList.Columns(4).ColumnWidth = 60output "end"End Sub
说明:将导出来的sql脚本去掉几处:只有这样才能将comments导出到Excel中
Ctrl+H替换下:将
1、SET utf8 COLLATE utf8_general_ci
2、CHARACTER
3、DEFAULT SET=utf8 COLLATE=utf8_general_ci
4、ENGINE=InnoDB
替换成空;对比如下:上面的去掉后,下面的是未去掉的;





