• 締切済み

SQLでCREATE TABLE文の作成

ログインしているユーザーが保有する テーブル名、列名、列の定義(PK、FK、INDEX等) を取得してCREATE TABLE文を作成したいのですが どのような方法があるのでしょうか? 自分で検索した時に"DBMS_METADATA.GET_DDL"を使用しての CREATE TABLE文の作成は見つかったのですが これだとOracleが文を自動生成しているようで CREATE TABLE文が複雑な物になってしまいました。 何かアドバイス等ありましたら宜しくお願いします。

みんなの回答

  • atkuma
  • ベストアンサー率11% (5/45)
回答No.4

最新のOracleは、すんごく賢くなったのねぇ。暴利を貪るOracleから9iで手を引いたから、わからんわ。 やりたいことはわかるけど、SQL*Plus上で作成したいのか、PL/SQLで生成したいのか、どういう手順でしたいのかわかんなーい! 原始的だと言われようが、select文で、user_objectsテーブルを参照して、object_nameで引っ掛けて、DML文を生成したらえぇんちゃうん?そしたら、どのVersionのoracleでも流用できるがな!

回答No.3

複雑なものにしたくないのであればGET_DDLの前に DBMS_METADATAパッケージのSET_TRANSFORM_PARAMで 設定すると、セグメント属性を出力しないなどの設定ができます。詳しくはPL/SQLパッケージ・プロシージャおよびタイプ・リファレンスや参考URLを参照してみてください。

参考URL:
http://biz.rivus.jp/technote507133.html
回答No.2

DBMS_METADATAパッケージ以外の方法で、DDLを作成する方法ですよね。 (古いオラクルでも使える)標準機能としては、 (1)ROWS=Nオプション付きで、エクスポートしてください。 (2)SHOW=Yオプション付きで、インポートを起動してください。 これで、画面にDDLが表示されます。 また、市販のツール類でも、DDLは生成できますので、探してみるのも一つの方法です。 その他、自分でデクショナリを検索して、DDLも生成できますが、 オラクルバージョン毎の機能差を意識する必要があり面倒なので ここでは、割愛します。

  • yuki22
  • ベストアンサー率28% (8/28)
回答No.1

こんばんは^^ あの・・それってただバックアップをとるって感じの事ではないですよね?? ごめんなさい、そんな単純じゃないよ!っていわれちゃったら私の勘違いなのですが・・ もし、そうだよ!でしたら、 create table aaa as select * from usre.PKだとおもうのですが・・、ちがってそう^^;

関連するQ&A