簡體   English   中英

使用sqlplus提取oracle數據庫erd

[英]extract oracle database erd with sqlplus

我想問一下從sqlplus提取oracle ER圖(ERD)的問題。 我有一個條件,我必須從我的vps(另一台服務器上的此oracle數據庫)訪問oracle數據庫。 我需要使用vps,因為使用vps時,它將提供一個域,該域將用於oracle數據庫服務器以授予對其數據庫的訪問權限。 我所知道的是從oracle sql Developer中生成ER Diagram的,但是使用我當前的vps,它僅提供了CLI。 不幸的是,SQL開發人員使用GUI,所以我不能使用它。 因此,如何使用sql developer從oracle數據庫中提取ER圖,並且此解決方案一定不能使用具有GUI的應用程序。

您可以生成一個純文本文件,其中包含每個表的描述,將該文件從遠程計算機下載到本地計算機,然后將內容加載到ERD工具(如Oracle DataModeler)中。

獲取表描述(包括目標,外鍵約束)的常見腳本是:

set heading off;
set echo off;
Set pages 1000;
set long 50000;
SET linesize 150;
spool My_ddl.sql;
select DBMS_METADATA.GET_DDL('TABLE','<your table 1>','<schema>') from DUAL;
select DBMS_METADATA.GET_DDL('TABLE','<your table 2>','<schema>') from DUAL;
select DBMS_METADATA.GET_DDL('TABLE','<your table 3>','<schema>') from DUAL;
    .
    .
    .
spool off; 

因此,基本上您仍然會使用GUI工具來構建圖表,但訣竅在於如何獲取源腳本。

如果您擔心如何為所有10,000個表生成get_ddl指令,請不要擔心,因為您可以運行以下命令:

SELECT 'SELECT DBMS_METADATA.GET_DDL(''TABLE'','''||table_name||''', ''<LOCAL/FOREIGN SCHEMA>'') FROM dual;' as get_ddls
FROM all_tables
WHERE owner = '<User of the foreign schema where tables are stored>';

然后只需將結果復制粘貼到上一個腳本即可。

為了檢索由文件生成的服務器端,除非您有直接訪問服務器目錄/文件的方法,否則您總是可以(當然)請您的DBA將其移交給您。

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM