- 締切済み
SQLでCREATE TABLE文の作成
ログインしているユーザーが保有する テーブル名、列名、列の定義(PK、FK、INDEX等) を取得してCREATE TABLE文を作成したいのですが どのような方法があるのでしょうか? 自分で検索した時に"DBMS_METADATA.GET_DDL"を使用しての CREATE TABLE文の作成は見つかったのですが これだとOracleが文を自動生成しているようで CREATE TABLE文が複雑な物になってしまいました。 何かアドバイス等ありましたら宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- atkuma
- ベストアンサー率11% (5/45)
最新のOracleは、すんごく賢くなったのねぇ。暴利を貪るOracleから9iで手を引いたから、わからんわ。 やりたいことはわかるけど、SQL*Plus上で作成したいのか、PL/SQLで生成したいのか、どういう手順でしたいのかわかんなーい! 原始的だと言われようが、select文で、user_objectsテーブルを参照して、object_nameで引っ掛けて、DML文を生成したらえぇんちゃうん?そしたら、どのVersionのoracleでも流用できるがな!
- ossan_hiro
- ベストアンサー率66% (88/132)
複雑なものにしたくないのであればGET_DDLの前に DBMS_METADATAパッケージのSET_TRANSFORM_PARAMで 設定すると、セグメント属性を出力しないなどの設定ができます。詳しくはPL/SQLパッケージ・プロシージャおよびタイプ・リファレンスや参考URLを参照してみてください。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
DBMS_METADATAパッケージ以外の方法で、DDLを作成する方法ですよね。 (古いオラクルでも使える)標準機能としては、 (1)ROWS=Nオプション付きで、エクスポートしてください。 (2)SHOW=Yオプション付きで、インポートを起動してください。 これで、画面にDDLが表示されます。 また、市販のツール類でも、DDLは生成できますので、探してみるのも一つの方法です。 その他、自分でデクショナリを検索して、DDLも生成できますが、 オラクルバージョン毎の機能差を意識する必要があり面倒なので ここでは、割愛します。
- yuki22
- ベストアンサー率28% (8/28)
こんばんは^^ あの・・それってただバックアップをとるって感じの事ではないですよね?? ごめんなさい、そんな単純じゃないよ!っていわれちゃったら私の勘違いなのですが・・ もし、そうだよ!でしたら、 create table aaa as select * from usre.PKだとおもうのですが・・、ちがってそう^^;