powerDesigner使用教程【原創】

於德曉發表於2018-01-23

如何配置powerDesigner 15 以及逆向工程匯出資料庫表結構。





PDM檔案路徑  D:\Program Files (x86)\Sybase\PowerDesigner 16

oracle 11g 使用者名稱及口令都是yudexiao

oracle_home

D:\orcl\asus1\product\11.2.0\dbhome_1

tns_admin

F:\orclClient\instantclient_11_2_x64

 

client

F:\orclClient\instantclient_11_2_x64

F:\orclClient\instantclient_11_2_x32

 

TNSNAMES.ORA-------

GTGISMANAGER =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

 

 

jdk

C:\ProjectOne\Java\jdk1.7.0_51

 

問題一:Could not initialize JavaVM

 

在網上查了許多資料,

 

有的地方說jdk安裝在program Files檔案裡面, 可能因為這個空格的原因造成的,  我先把jdk裝在了C:\java目錄下面

 

還是不行, 我使用的jdk64位的又重新安裝了一個windows x86版本的jdk, 改了一下JAVA_HOME

 

其他設定如下,我使用的15.3版本的powerdesigner

 

1.系統變數-classpath:加入mysql jar包的地址(例如C:\mysql-connector-java-3.1.13-bin.jar)

 

2.powerdesigner-Tools-General Options-Variables 修改JAR,JAVA,JAVAC,JAVADOCValue

 

例如 JARValue:         C:\Java\jdk1.6.0_30\bin\jar.exe

 

      JAVAValue:        C:\Java\jdk1.6.0_30\bin\java.exe

 

      JAVACValue:      C:\Java\jdk1.6.0_30\bin\javac.exe

 

      JAVADOCValue:  C:\Java\jdk1.6.0_30\bin\javadoc.exe

 

3.powerdesigner-Database-Configure Data Connections-Connection Profiles

 

點選Add Data source圖示, 依次填入連線資訊

 

例如:Connection profile name:MySQL

 

Description:                  MySQL

 

Connection type:JDBC

 

DBMS type:        MySQL

 

User name:         root

 

Password:         123

 

JDBC driver class:      com.mysql.jdbc.Driver

 

JDBC connetion URL:jdbc:mysql://localhost:3306/database

 

JDBC driver jar files:    C:\mysql-connector-java-3.1.13-bin.jar

問題二:如何配置綠色版oracle client

client有兩種:一種是安裝包裡有setup.exe檔案的,另一種是綠色免安裝的,使用的時候需要在環境變數中配置。配置如下:



綠色免安裝版的安裝包如下:


沒有setup.exe檔案


問題三:PD學習網站及PD的使用小小感悟

推薦學習powerDesigner的視訊網站,網址如下:http://video.1kejian.com/computer/soft/76527/

 

1、客戶端引發的思考

本次安裝配置PowerDesigner,遇到很多困惑,雖然很多網友提示安裝客戶端,但是這次並沒有用到客戶端的配置,安裝問題,主要問題懷疑在sqldeveloper上,sqldeveloper並不像PL/SQL developer那樣,需要配置。

以下網友帖子上的觀點:

PL/SQL相對來說開發和管理上的功能更強大些,用的人也多些

SQL DE跨平臺效能好,遷移功能挺強大,圖形顯示功能也不錯

網友Palm

 

網友inthirties

呵呵

 

plsql還是比較主流的,在開發和管理上都比較方便,還支援匯入。匯出功能, 不過需要安裝Oracle的客戶端,並且需要配置tnsname。這是我覺得,他稍微弱勢的一點。

Oracle psql dev呢,是Oracle自帶的工具,11g已經內嵌到資料庫的安裝裡去了,也提供比較好的開發和管理的功能,但是相對plsql來說,要弱一些,不過其中帶有的migration tools是我鐘情於此工具的一點。 可以對異構或者同構的資料庫進行資料遷移,我在mysqlms sql上都做個不是很復雜的遷移,還是很方便和實用的,而且該工具最好的一點是 java開發,使用的jdbc的連線方式,所以即使沒有安裝客戶端也可以通過thin的方式連線

這兩個工具在開發和管理上 plsql dev 勝出一籌

但是在遷移功能和跨平臺上 sql dev又亮點多多。

你根據你自己的情況來進行選擇吧。

 

2ODBCJDBC之間的那點小事兒

本次PowerDesigner的安裝配置,在ODBC  Machine Data Source選項上徘徊的時間,還真不少,挺多的。網友提示,搞Java用的驅動程式應該是JDBC。下面就ODBCJDBC之間的區別、聯絡做百度學習。

JDBC, 全稱為Java DataBase Connectivity standard, 它是一個物件導向應用程式介面API, 通過它可訪問各類關聯式資料庫JDBC也是java核心類庫的一部分。

 

    JDBC的最大特點是它獨立於具體的關聯式資料庫。與ODBC (Open Database Connectivity)類似, JDBC API 中定義了一些Java類分別用來表示與資料庫的連線(connections, SQL語句(SQL statements, 結果集(result sets)以及其它的資料庫物件, 使得Java程式能方便地與資料庫互動並處理所得的結果。使用JDBC, 所有Java程式(包括Java applications , appletsservlet)都能通過SQL語句或儲存在資料庫中的過程(stored procedures)來存取資料庫。

 

    要通過JDBC來存取某一特定的資料庫,必須有相應的JDBC driver,它往往是由生產資料庫的廠家提供,是連線JDBC API與具體資料庫之間的橋樑。

 

    通常,Java程式首先使用JDBC API來與JDBC Driver Manager互動,由JDBC Driver Manager載入指定的JDBC drivers, 以後就可以通過JDBC API來存取資料庫。

ODBC(Open Database Connectivity,開放資料庫互連)微軟公司開放服務結構(WOSAWindows Open Services Architecture)中有關資料庫的一個組成部分,它建立了一組規範,並提供了一組對資料庫訪問的標準API(應用程式程式設計介面)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支援,使用者可以直接將SQL語句送給ODBC

{1.微軟的東西比較複雜}

 

一個基於ODBC的應用程式對資料庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的資料庫操作由對應的DBMSODBC驅動程式完成。也就是說,不論是FoxProAccess還是Oracle資料庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的資料庫。

{1.ODBC也是處理所有DB,微軟帝國的東西必須有其霸道的一面}

 

 

一個完整的ODBC由下列幾個部件組成:

 

應用程式(Application)

 

ODBC管理器(Administrator)。該程式位於Windows 95控制皮膚(Control Panel)32ODBC內,其主要任務是管理安裝的ODBC驅動程式和管理資料來源。

 

驅動程式管理器(Driver Manager)。驅動程式管理器包含在ODBC32.DLL中,對使用者是透明的。其任務是管理ODBC驅動程式,是ODBC中最重要的部件。

 

ODBC API

 

ODBC 驅動程式。是一些DLL,提供了ODBC和資料庫之間的介面。 DLL:應用程式擴充套件)

 

資料來源。資料來源包含了資料庫位置和資料庫型別等資訊,實際上是一種資料連線的抽象。

 

各部件之間的關係如圖下圖所示:

 

 

應用程式要訪問一個資料庫,首先必須用ODBC管理器註冊一個資料來源,管理器根據資料來源提供的資料庫位置、資料庫型別及ODBC驅動程式等資訊,建立起ODBC與具體資料庫的聯絡。這樣,只要應用程式將資料來源名提供給ODBCODBC就能建立起與相應資料庫的連線。

 

ODBC中,ODBC API不能直接訪問資料庫,必須通過驅動程式管理器與資料庫交換資訊。驅動程式管理器負責將應用程式對ODBC API的呼叫傳遞給正確的驅動程式,而驅動程式在執行完相應的操作後,將結果通過驅動程式管理器返回給應用程式。

 

在訪問ODBC資料來源時需要ODBC驅動程式的支援。用Visual C++ 5.0安裝程式可以安裝SQL ServerAccessParadoxdBaseFoxProExcelOracle Microsoft Text等驅動程式.在預設情況下,VC5.0只會安裝SQL ServerAccessFoxProdBase的驅動程式.如果使用者需要安裝別的驅動程式,則需要重新執行VC 5.0的安裝程式並選擇所需的驅動程式。


問題:powerdesigner逆向工程,從資料庫匯出PDM


DataBase-->configure Connections-->Connection Profiles-->左上角Properties-->Connection Profile Definition-->Test Connection

問題:powerdesigner如何將表格匯入DataBase


DataBase-->configure Connections-->Connection Profiles-->左上角Properties-->Connection Profile Definition-->Test Connection


問題:powerdesigner如何將表格匯入DataBase






問題:如何通過VB指令碼將Name批量轉成Comment

 

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   comment   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

                  tab.comment   =   tab.name

                  Dim   col   '   running   column

                  for   each   col   in   tab.columns

                          col.name = col.comment                     

next

            end   if

      next

      Dim   view   'running   view

      for   each   view   in   folder.Views

            if   not   view.isShortcut   then

                  view.comment   =   view.name

            end   if

      next

      '   go   into   the   sub-packages

      Dim   f   '   running   folder

      For   Each   f   In   folder.Packages

            if   not   f.IsShortcut   then

                  ProcessFolder   f

            end   if

      Next

end   sub

 

 

'程式碼一:Name中的字元COPYComment中  

  

  

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   comment   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   

                  tab.comment   =   tab.name   

                  Dim   col   '   running   column   

                  for   each   col   in   tab.columns   

                        col.comment=   col.name   

                  next   

            end   if   

      next  

  

      Dim   view   'running   view   

      for   each   view   in   folder.Views   

            if   not   view.isShortcut   then   

                  view.comment   =   view.name   

            end   if   

      next  

  

      '   go   into   the   sub-packages   

      Dim   f   '   running   folder   

      For   Each   f   In   folder.Packages   

            if   not   f.IsShortcut   then   

                  ProcessFolder   f   

            end   if   

      Next   

end   sub

 

 

 

 

    '程式碼二:Comment中的字元COPYName中   

      

    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  

      

    Private   sub   ProcessFolder(folder)   

    On Error Resume Next  

          Dim   Tab   'running     table   

          for   each   Tab   in   folder.tables   

                if   not   tab.isShortcut   then   

                      tab.name   =   tab.comment  

                      Dim   col   '   running   column   

                      for   each   col   in   tab.columns   

                      if col.comment="" then  

                      else  

                            col.name=   col.comment   

                      end if  

                      next   

                end   if   

          next  

      

          Dim   view   'running   view   

          for   each   view   in   folder.Views   

                if   not   view.isShortcut   then   

                      view.name   =   view.comment   

                end   if   

          next  

      

          '   go   into   the   sub-packages   

          Dim   f   '   running   folder   

          For   Each   f   In   folder.Packages   

                if   not   f.IsShortcut   then   

                      ProcessFolder   f   

                end   if   

          Next   

    end   sub  


問題:如何通過VB指令碼將Name批量轉成Comment

 

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   comment   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

                  tab.comment   =   tab.name

                  Dim   col   '   running   column

                  for   each   col   in   tab.columns

                          col.name = col.comment                     

next

            end   if

      next

      Dim   view   'running   view

      for   each   view   in   folder.Views

            if   not   view.isShortcut   then

                  view.comment   =   view.name

            end   if

      next

      '   go   into   the   sub-packages

      Dim   f   '   running   folder

      For   Each   f   In   folder.Packages

            if   not   f.IsShortcut   then

                  ProcessFolder   f

            end   if

      Next

end   sub

 

 

'程式碼一:Name中的字元COPYComment中  

  

  

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   comment   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   

                  tab.comment   =   tab.name   

                  Dim   col   '   running   column   

                  for   each   col   in   tab.columns   

                        col.comment=   col.name   

                  next   

            end   if   

      next  

  

      Dim   view   'running   view   

      for   each   view   in   folder.Views   

            if   not   view.isShortcut   then   

                  view.comment   =   view.name   

            end   if   

      next  

  

      '   go   into   the   sub-packages   

      Dim   f   '   running   folder   

      For   Each   f   In   folder.Packages   

            if   not   f.IsShortcut   then   

                  ProcessFolder   f   

            end   if   

      Next   

end   sub

 

 

 

 

    '程式碼二:Comment中的字元COPYName中   

      

    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  

      

    Private   sub   ProcessFolder(folder)   

    On Error Resume Next  

          Dim   Tab   'running     table   

          for   each   Tab   in   folder.tables   

                if   not   tab.isShortcut   then   

                      tab.name   =   tab.comment  

                      Dim   col   '   running   column   

                      for   each   col   in   tab.columns   

                      if col.comment="" then  

                      else  

                            col.name=   col.comment   

                      end if  

                      next   

                end   if   

          next  

      

          Dim   view   'running   view   

          for   each   view   in   folder.Views   

                if   not   view.isShortcut   then   

                      view.name   =   view.comment   

                end   if   

          next  

      

          '   go   into   the   sub-packages   

          Dim   f   '   running   folder   

          For   Each   f   In   folder.Packages   

                if   not   f.IsShortcut   then   

                      ProcessFolder   f   

                end   if   

          Next   

    end   sub  

如何去除引號,欄位的引號

選單DataBase-->Edit Current DBMS-->General-->Script-->


如何讓name列顯示中文:

tools-->modeloptions-->naming convention-->display,選擇NAM


PowerDesigner匯出指令碼里包含檢視

     

    開啟使用MySQL5.0PDM之後,在選單裡選擇

    Database-> Edit   Current   DBMS..

    確認DBMS使用的是MySQL5.0

    開啟左端樹狀結構Script-> Objects-> View  

    選中Create,在右端的Value中寫入

    create   VIEW   [%R%?[   if   not   exists]]   %VIEW%

    as

    %SQL%

    選中Drop,在右端的Value中寫入  

    drop   table   if   exists   %VIEW%

    選中Enable,在右端的Value中選擇Yes

    確定儲存。

以上操作雖然能run 指令碼,但是生成的是table table名字是xxx_view,

 

 

 

 

 

 

匯入資料庫

2、向資料庫中匯入表

 

(1)powerDesinger中,Database-->Generate Database...

  選擇要匯入的表,以及是否生成指令碼檔案,如果不生成指令碼檔案,就選擇odbcGeneration,不過,如果直接往資料庫中匯入,一般不太容易成功,我導的時候,報了很多的error,後來查了一下,是因為powerDesigner生成的Sql語句表名,欄位名都自動加上了雙引號,所以匯入的時候出現問題。不過據說這個問題可以通過你在建表的時候全部字母大寫來解決,我沒試過,大家可以試試

(2)我是匯出的.sql指令碼檔案,再將所有的雙引號轉換成空格

(3)進入oracle伺服器,怎樣連,這裡就不說了,將這個.sql檔案放到$oracle_home目錄下,在命令列下敲入

SQL>@檔名.sql

  就OK

問題:Could not Initialize JavaVM

如果出現   Could not Initialize JavaVM!   則說明JAVA環境配置錯誤,首先power designer需要在32位jdk環境下執行,可以先下載32位的jdk(如果用odbc連線那麼另當別論),

然後設定環境變數  ,在這裡我是建立了一個批處理檔案,直接設定環境變數

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_25

set CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

set path=C:\Program Files (x86)\Java\jdk1.8.0_25\bin

除了  上面這幾個還需要在 工具--->常規選項--->varibles    裡面設定一下四個選項(JAR,JAVA,JAVAC,JAVADOC)的路徑如下圖所示   



相關文章