1. 程式人生 > >PowerDesigner 16 逆向生成 oracle pdm

PowerDesigner 16 逆向生成 oracle pdm

軟體版本

PowerDesigner 16

oracle11g

第一步:

---> 在下面彈出框中 選擇自己資料庫版本,點選"確定"

--->

-->

-->如圖中選擇,點選 Modify 彈出如下對話方塊


--》填寫相對應的資料連線資訊,點選“Test Connection” 按鈕,測試資料來源是否能連線資料庫

-->測試成功,點選 確定 按鈕

-->

-->點選 確定


--如上圖,點選OK  然後生成 PDM 檔案。

如果想給 表名,欄位名 添加註釋,需要如下操作。

修改匯出sql


匯出sql 為:

{OWNER, TABLE, TABLE_TYPE, COMMENTS}

select
   t.owner,
   t.table_name, 
c.table_type, 
c.comments
from
   sys.all_all_tables t,
sys.USER_TAB_COMMENTS c 
where
   not exists (select 1 from sys.all_mviews s where s.owner = t.owner and t.table_name in (s.mview_name, s.update_log))
   and t.iot_name is null
   and nvl(t.dropped, 'NO') = 'NO'
and t.table_name = c.table_name(+)
   and substr(t.table_name, 1, 5) not in ('MLOG$', 'RUPD$')
[  and t.table_name=%.q:TABLE%]
[  and t.owner=%.q:SCHEMA%]
order by
   t.owner, t.table_name

以上,重新執行開始 匯出pdm ,表名會自動添加註釋。

------------------------------------------------------------------------------------------------------------------------------------------------------------

使用指令碼把 name 設定為 comments

在此操作之前,先設定code不跟隨name改變。選擇選單中Tools->General Options...,在開啟的視窗中找到Dialog,去掉Name to Code mirroring 前面的勾,點選OK

選擇選單中Tools->Excute Commands -> Edit/Run Scripts... 在開啟的視窗中貼上如下指令碼,點選Run按鈕,等待執行完成即可。

Option Explicit     
ValidationMode = True     
InteractiveMode = im_Batch     
    
Dim mdl 'the current model     
    
'get the current active model     
Set mdl = ActiveModel     
If (mdl Is Nothing) Then     
MsgBox "There is no current Model"    
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then     
MsgBox "The current model is not an Physical Data model."    
Else     
ProcessFolder mdl     
End If     
    
'This routine copy name into code for each table, each column and each view     
'of the current folder     
Private sub ProcessFolder(folder)     
    
Dim Tab 'running table     
for each Tab in folder.tables     
if not tab.isShortcut then     
if len(tab.comment) <> 0 then     
tab.name = tab.comment     
end if     
On Error Resume Next     
Dim col 'running column     
for each col in tab.columns     
if len(col.comment) <>0 then     
col.name =col.comment     
end if     
On Error Resume Next     
next     
end if     
next     
end sub