程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> PowerDesigner 16.5 使用VBScript腳本從Excel導入物理數據模型,powerdesigner腳本

PowerDesigner 16.5 使用VBScript腳本從Excel導入物理數據模型,powerdesigner腳本

編輯:Oracle教程

PowerDesigner 16.5 使用VBScript腳本從Excel導入物理數據模型,powerdesigner腳本


本文使用的數據庫類型是Oracle 11g

最近在工作中遇到一個問題:數據的設計以表格的形式保存在Excel文件中。(由於保密原因,我只能看到數據庫設計文檔,無法訪問數據庫。=_=!)

其中包括Name,Code,DataType,Unit,Length,Precision,Primary,Foreign Key,Mandatory,Comment等字段。

現在我要使用PowerDesigner重新建立這些表的物理模型,但是面對好幾百個表,如果使用復制粘貼的方式不但費事費力,而且容易出錯。

PowerDesigner提供了很多擴展功能,其中包括從Excel文件導入物理數據模型。

導入的方式有兩種,一種是把表的設計模型整理為PowerDesigner要求的格式,另外一種是編寫VBScript腳本。

由於編寫VBScritp比較靈活,而且把表的設計整理為PowerDesigner需要的格式也比較麻煩,所以通過編寫VBScript腳本導入Excel中的模型數據。

1 '============================================================ 2 '從Excel文件中導入PowerDesigner 物理數據模型 3 ' 4 '注意:1,Excel表格中不能有合並的單元格 5 ' 2,列之間不能有空行 6 '============================================================ 7 8 9 Option Explicit 10 11 '============================================================ 12 '私有全局變量。 13 '============================================================ 14 Private CURRENT_MODEL 15 Private TABLES 16 Private EXCEL_APP 17 Private FILE_PATH 18 19 Set CURRENT_MODEL = ActiveModel 20 Set EXCEL_APP = CreateObject("Excel.Application") 21 FILE_PATH="D:\models.xlsx" '文件的絕對路徑 22 23 24 '檢查文件是否存在 25 If CheckFileExsistence() Then 26 '檢查當前是否有已經打開的物理圖 27 If CURRENT_MODEL is Nothing Then 28 MsgBox("請先打開一個物理數據模型(Physical Data Model),然後再進執行導入!") 29 Else 30 Set TABLES = CURRENT_MODEL.Tables 31 '根據EXCEL表格創建模型 32 ImportModels() 33 End If 34 Else 35 MsgBox "文件" + FILE_PATH + "不存在!" 36 End If 37 38 39 '============================================================ 40 '檢查文件是否存在 41 '============================================================ 42 Function CheckFileExsistence 43 Dim fso 44 Set fso = CreateObject("Scripting.FileSystemObject") 45 CheckFileExsistence = fso.FileExists(FILE_PATH) 46 End Function 47 48 49 '============================================================ 50 '導入模型 51 '============================================================ 52 Sub ImportModels 53 '打開Excel文件 54 EXCEL_APP.Workbooks.Open FILE_PATH 55 56 Dim worksheets 57 Dim worksheetCount 58 Set worksheets = EXCEL_APP.Worksheets 59 worksheetCount = worksheets.Count 60 If worksheetCount <= 0 Then 61 Exit Sub 62 End If 63 64 Dim index 65 Dim currentSheet 66 For index = 1 to worksheetCount 67 Set currentSheet = worksheets(index) 68 CreateTable currentSheet 69 Next 70 71 '關閉Excel文件 72 EXCEL_APP.Workbooks.Close 73 End Sub 74 75 76 '============================================================ 77 '創建表 78 '============================================================ 79 Sub CreateTable(worksheet) 80 Dim cells 81 Set cells = worksheet.Cells 82 '檢查具有相同名稱的表是否已經存在 83 If TableExists(cells(1, 1).Value) Then 84 MsgBox "表“" + cells(1, 1).Value + "”已經存在!" 85 Exit Sub 86 End If 87 88 Dim table 89 Set table = TABLES.CreateNew 90 table.Name = cells(1, 1).Value 91 table.Code = cells(2, 1).Value 92 table.Comment = cells(3, 1).Value 93 94 95 Dim index 96 Dim rows 97 Dim col 98 Set rows = worksheet.Rows 99 For index = 4 to 512 100 If EXCEL_APP.WorksheetFunction.CountA(rows(index)) <= 0 Then 101 Exit For 102 End If 103 104 Set col = table.Columns.CreateNew 105 col.Name = cells(index, 1).Value '字段的中文含義 106 col.Code = cells(index, 2).Value '字段名 107 col.Unit = cells(index, 4).Value '字段的單位 108 col.DataType = cells(index, 3).Value '字段的數據類型 109 col.Comment = cells(index, 8).Value '字段的注釋 110 Next 111 End Sub 112 113 114 '============================================================ 115 '檢查表是否已經存在 116 '============================================================ 117 Function TableExists(tableName) 118 Dim tbl 119 For Each tbl in TABLES 120 If StrComp(tbl.Name, tableName) = 0 Then 121 TableExists = True 122 Exit Function 123 End If 124 Next 125 TableExists = False 126 End Function View Code

下面是測試腳本使用的Excel文件格式:

前三行的第一個單元格中的值分別是:表名稱,數據庫表名稱,表的說明信息。

第4行到低7行都是列信息。

A到H列依次為:列名,字段名稱,數據類型,單位,是否主鍵,是否外鍵,是否非空,列注釋信息。

 

以下是Excel導入的步驟:

1,在PowerDesigner中先打開一個物理數據模型,然後按Ctrl + Shift + X執行腳本。

   執行完成之後的界面如下:

導入完成之後PhysicalDiagram_1中並沒有顯示表的符號。

在PowerDesigner的元數據模型API文檔中沒有找到對應的API所以就這樣將就了;D

2,展開上圖所示的Tables文件夾。左鍵點擊圖標,把表拖到指定的物理圖(Physical Diagram)中。

這樣就實現了從Excel中導入數據庫物理模型。

 

總結:

這個腳本雖然實現了導入功能,但是還不夠完善。第二步要手動完成,因為我沒有找到相應的API =_=!。

此外,腳本中沒有設置相應的主鍵,外鍵和非空約束等。

如果哪位知道如何使用腳本實現第二步,請告訴我!謝謝!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved