• ベストアンサー

既存DBのテーブル情報をCREATE文として取得するには

こんにちは。 既存DBのテーブル情報をCREATE文として取得する方法はありますでしょうか? CREATE文として欲しいのは、他のサーバに開発用として同じDBを構築しようと考えているからです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

ごめんなさい、うそ書いちゃいました。 実際のコマンド確認したところ、DDL文ファイルに出力させるには、インポートのコマンドであるimpのINDEXFILEオプションを使用します。 で、そのimpの実行に必要なファイルをexpで取得します。 expの方ですが、ROWS=Nで実行すればデータはエクスポートされずに定義のみエクスポートとなります。 >やはり、catexp.sql及びexpを実行するには、運用を止めて使用していない状態の方が良いのでしょうか? catexp.sql、たいていDB構築時には流してると思いますよ。 1度流せばいいものなので、expが使えなかったら流すことを検討すればいいと思います。 心配でしたらcatexp.sqlが中でどんなSQLを流しているか自分で見てみるのがいいかと。 expは間違って行の内容まで出力させるとテーブルのサイズによっては大変なことになるのでパラメータの十分な確認が必要です。

touge123
質問者

お礼

ご返事ありがとうございます。 エクスポートとインポートについて、なんとなく見えてきました、catexp.sqlについては、まずexpを実行してみます、expのパラメータは注意が必要ですね。 参考になりました、ありがとうございます。 また、何かありましたらよろしくお願いします。

その他の回答 (5)

回答No.6

Enterprise Manager や DBA Studio といった、Oracle のツールを使用できますでしょうか? 使用可能であれば、 1.スキーマの中から対象のテーブルを選択 2.類似作成を選択 3.SQL表示ボタンを押す することで、テーブル名以外の情報を取得できます。 ただし、1テーブルごとなので多数あると大変ですが・・。 同じ環境を構築されるのでしたらEXP,IMPの使用をお勧めします。

touge123
質問者

お礼

ご返事ありがとうございます。 Enterprise Managerがたしかインストールされていました、これを使用するとテーブル情報が取得出来るんですね、テーブル数は100近くありますので、1テーブル毎となると時間は掛かりますね。 Enterprise Managerでテーブル情報が取得出来ることがわかりましたので、参考になりました、ありがとうございます、また、何かありましたらよろしくお願いします。

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.5

No.4です。 「オブジェクトブラウザ」という言葉が、touge123さんが認識しておられるものと同じかどうか、不安なのですが。 私が認識しているものは、株式会社システムインテグレータの「Oracle開発支援ツール SI Object Browser」のことです。 http://www.sint.co.jp/siob/default.asp その中のオンラインマニュアルの「4-1 テーブル」の「ソース」タブを見ると、CREATE文を見ることが出来ることが掲載されています。 http://www.sint.co.jp/siob/online8/ob80vol4.html#4-1 その定義内容をコピー&ペーストすれば、他の環境に移植できます。

touge123
質問者

お礼

ご返事ありがとうございます。 すみません、「オブジェクトブラウザ」という言葉自体聞き覚えがありませんでした。 オブジェクトブラウザというOracleと密接に連携しがとれるツールが発売されているんですね。 これを使用すると簡単にcreate文が取得出来ますね、あとは、ソフトの調達とユーザーの端末にインストール出来るかという問題がありますが、大変参考になりました、ありがとうございました、また、何かありましたらよろしくお願いします。

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.4

No.3です。 ああ恥ずかしい!ご質問の意味を取り違えていました。 CREATE文そのものが欲しいのですね。 それでは、オブジェクトブラウザを使用するのは如何でしょうか?(OTNの掲示板では皆さん批判的ですが)

touge123
質問者

お礼

ご返事ありがとうございます。 はい、create文そのものを取得したかったのです。 >それでは、オブジェクトブラウザを使用するのは如何でしょうか? すみません、知識不足でオブジェクトブラウザでどのようにしたら、create文を取得出来ますでしょうか、 教えて頂けると幸いです。 参考になるHP等でも構いません。 よろしくお願いします。

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.3

全く詳しくはないのですが… 「CREATE TABLE 新表名 AS SELECT 項目名(「*」でも可)FROM コピー元表名 WHERE句」で出来るはずです。 ただし、NOT NULL以外の制約やトリガーはコピーされないそうです。(データはコピーされます)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

expコマンドでデータのエクスポートを行うのではなく、DDL文をテキストファイルに出力させることができます。 詳しくは、 exp help=y で。

touge123
質問者

お礼

ご返事ありがとうございます。 exp help=yを調べて見ます。

touge123
質問者

補足

expコマンドを調べて見ました。 このコマンドを実行する前の準備としてcatexp.sqlを実行する必要があるのは分かったのですが、DBを運用で使用中に実行出来ますでしょうか、やはり、catexp.sql及びexpを実行するには、運用を止めて使用していない状態の方が良いのでしょうか? よろしくお願いします。