こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Oracle8iでテーブルをエクスポートする方法

Oracle10gを使用しています。Oracle8iから特定のテーブルを抽出してOracle10gに入れようとしましたが、Oracle10gのexpコマンドは互換性の問題で8iに対して使えませんでした。そこでOracle8iのexpコマンドを使用しようかと考えましたが、テーブルごとのエクスポートができないとのことで不可(データベースが大きすぎるため、そもそも8iのExpコマンドを実行できる権限を持っていないのでできませんが)。

仕方がないのでExpコマンドはあきらめて、テーブル定義抽出→データをCSVまたはSQLで抽出という手順でデータを移そうかと考えています。データの抽出はできたのですが、テーブル定義の取得は10gで使えるdbms_metadata.get_ddlが使用できないので取得できずにこまっています。8iでテーブル定義を取得するにはどうしたらいいのでしょうか?

なお当方8iのデータベースのSystem/Sys権限を所有していないません。また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

投稿日時 - 2010-02-22 16:48:52

QNo.5697527

暇なときに回答ください

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Oracle8iへは、対象テーブルの所有者でログインすることもできないのでしょうか?それだとどうしようもないのですが・・・

対象テーブルの所有者でログインできるのならば、expコマンドでその所有者でログインし、tables,rowsパラメータを指定すればテーブル単位で定義のみエクスポートできるはずです。

投稿日時 - 2010-02-23 15:57:34

ANo.1

Oracle8iですと、定義を抜き出すのはexpで「rows=n」オプションを指定してCreate文のみ抜き出すことが可能です。
あとはimpの際に「show=y」を指定するとCreate文が表示されます。

しかし権限がないので上記ができないということですよね。

>また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

上記はSQLを発行する事自体ができないということでしょうか。
データの抽出はできたということなので、SQL文は発行できると仮定するとディクショナリから設定を抜き出してCreate文を作るしかないでしょう。
※昔、PL/SQLで作ったことがあります。

以下のようなディクショナリから情報を抜き出します。

user_tables
user_tab_columns
user_indexes
user_ind_columns
user_constraints

そえもダメならテーブル定義を管理している部署にCreate文をもらうしかないと思います。

投稿日時 - 2010-02-22 18:41:16

あなたにオススメの質問