こんにちは、代表の亀井です。
ER図の出力を「Cacoo (カクー)」で自動で出力する場合の方法について記載します。
サポートされているわけでもありませんので、実施する場合は自己責任でお願いします。

CacooのER図出力機能

機能利用手順

左側のメニューから「データベーススキーマ」を選択します。

Cacoo データベーススキーマ

DBMSの選択で、「MySQL」と「PostgreSQL」のどちらかを選択できます。

Cacoo データベース選択

選択したデータベースの定義出力用のSQLが記載されており、こちらをCSVで出力した後、次のインポート画面でインポートするとER図が生成されます。

Cacoo CSVインポート

とっても簡単ですが、Oracle Databaseがないので、MySQLのインポートをOracle Database用に書き換えて使おうというのが今回の内容です。

MySQL用のSQLをOracle Database用に書き換え

以下のSQLを実行します。
SQL*Plusで直接CSVに変換する設定も書いておきます。

sqlplus <ユーザー名>/<パスワード>

ログイン後以下を実行します。
最後にand ata."OWNER" = '&SCHEMA_NAME.'の文でテーブルの持ち主を1つのスキーマに絞っています。不要でしたら消して実行してください。

set markup csv on pagesize 10000
SELECT
  'mysql' as dbms,
  ata."OWNER" as TABLE_SCHEMA,
  ata."TABLE_NAME" as TABLE_NAME,
  atc."COLUMN_NAME" as COLUMN_NAME,
  atc."COLUMN_ID" as ORDINAL_POSITION,
  lower(atc."DATA_TYPE") as DATA_TYPE,
  decode(
        atc."DATA_TYPE"
      , 'NUMBER', NULL
      , 'DATE', NULL
      , atc."DATA_LENGTH"
  ) as CHARACTER_MAXIMUM_LENGTH,
  decode(
         ac."CONSTRAINT_TYPE"
       , 'C', 'CHECK'
       , 'P', 'PRIMARY KEY'
       , 'U', 'UNIQUE'
       , 'R', 'FOREIGN KEY'
       , NULL
  ) as CONSTRAINT_TYPE,
  ac."R_OWNER" as REFERENCED_TABLE_SCHEMA,
  ac."REFERENCED_TABLE_NAME" as REFERENCED_TABLE_NAME,
  ac."REFERENCED_COLUMN_NAME" as REFERENCED_COLUMN_NAME 
from
    "ALL_TABLES" ata
  , "ALL_TAB_COLUMNS" atc
  , (
      select ac1."R_OWNER"
           , ac1."OWNER"
           , ac1."TABLE_NAME"
           , ac1."CONSTRAINT_TYPE"
           , acc."COLUMN_NAME"
           , NULL as "REFERENCED_TABLE_NAME"
           , NULL as "REFERENCED_COLUMN_NAME"
        from "ALL_CONSTRAINTS" ac1
           , "ALL_CONS_COLUMNS" acc
       where ac1."OWNER" = acc."OWNER"
         and ac1."CONSTRAINT_NAME" = acc."CONSTRAINT_NAME"
         and ac1."CONSTRAINT_TYPE" <> 'R'
       union all
      select ac2."R_OWNER"
           , ac2."OWNER"
           , ac2."TABLE_NAME"
           , ac2."CONSTRAINT_TYPE"
           , acc_a."COLUMN_NAME"
           , acc_b."TABLE_NAME" as "REFERENCED_TABLE_NAME"
           , acc_b."COLUMN_NAME" as "REFERENCED_COLUMN_NAME"
        from "ALL_CONSTRAINTS" ac2
           , "ALL_CONS_COLUMNS" acc_a
           , "ALL_CONS_COLUMNS" acc_b
       where ac2."OWNER" = acc_a."OWNER"
         and ac2."CONSTRAINT_NAME" = acc_a."CONSTRAINT_NAME"
         and ac2."CONSTRAINT_TYPE" = 'R'
         and acc_a.POSITION = acc_b.POSITION
         and acc_b."OWNER" = ac2.R_OWNER
         and acc_b."CONSTRAINT_NAME" = ac2."R_CONSTRAINT_NAME"
    ) ac
where
      ata."OWNER" = atc."OWNER"
  and ata."TABLE_NAME" = atc."TABLE_NAME"
  and ata."OWNER" = ac."OWNER"(+) 
  and ata."TABLE_NAME" = ac."TABLE_NAME"(+)
  and atc."OWNER" = ac."OWNER"(+) 
  and atc."COLUMN_NAME" = ac."COLUMN_NAME"(+)
  and ata."OWNER" = '&SCHEMA_NAME.'
;

おわりに

Cacooを利用していたが困っていたなど、もし助けになりましたら幸いです。
ヌーラボの方がこの記事を見ていたら、Oracle Databaseも追加しておいていただけると嬉しいですね。

「Cacoo (カクー)」は株式会社ヌーラボの登録商標または商標です