アプリ版:「スタンプのみでお礼する」機能のリリースについて

ログインしているユーザーが保有する
テーブル名、列名、列の定義(PK、FK、INDEX等)
を取得してCREATE TABLE文を作成したいのですが
どのような方法があるのでしょうか?

自分で検索した時に"DBMS_METADATA.GET_DDL"を使用しての
CREATE TABLE文の作成は見つかったのですが
これだとOracleが文を自動生成しているようで
CREATE TABLE文が複雑な物になってしまいました。

何かアドバイス等ありましたら宜しくお願いします。

A 回答 (4件)

最新のOracleは、すんごく賢くなったのねぇ。

暴利を貪るOracleから9iで手を引いたから、わからんわ。
やりたいことはわかるけど、SQL*Plus上で作成したいのか、PL/SQLで生成したいのか、どういう手順でしたいのかわかんなーい!

原始的だと言われようが、select文で、user_objectsテーブルを参照して、object_nameで引っ掛けて、DML文を生成したらえぇんちゃうん?そしたら、どのVersionのoracleでも流用できるがな!
    • good
    • 0

複雑なものにしたくないのであればGET_DDLの前に


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

参考URL:http://biz.rivus.jp/technote507133.html
    • good
    • 0

DBMS_METADATAパッケージ以外の方法で、DDLを作成する方法ですよね。



(古いオラクルでも使える)標準機能としては、

(1)ROWS=Nオプション付きで、エクスポートしてください。
(2)SHOW=Yオプション付きで、インポートを起動してください。

これで、画面にDDLが表示されます。

また、市販のツール類でも、DDLは生成できますので、探してみるのも一つの方法です。

その他、自分でデクショナリを検索して、DDLも生成できますが、
オラクルバージョン毎の機能差を意識する必要があり面倒なので
ここでは、割愛します。
    • good
    • 0

こんばんは^^


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!