【初心者向け】簡単にOracleのdmpファイルをインポートする方法(少し応用編)

今回は「dmpのインポートは出来た!もう少しステップアップしてみたい!」という方へ向けた内容を紹介します。基礎の基礎については以下のリンクを参照願います。

www.steallcreate.com 

また、本記事作成にあたって利用したOracleのバージョンは11gR2です。

インポートの種類

インポートにも種類があります。そんなに難しくは無いので安心して下さい。

  • データベース全体をインポート
  • 表領域をインポート
  • 指定ユーザの全てのオブジェクトをインポート
  • 表(テーブル)のインポート

「そんなものもあるんだ」程度で大丈夫です。詳細を説明すると時間がかかってしまうので、読んでる人にとっても少しパワーが必要です。では、業務で必要なものや使用頻度の高いものを紹介します。

 

パラメータを使う

Oracleのインポートにはパラメータと呼ばれるものを指定することが可能です。色々なパラメータがあります。公式サイトにも記載がありますので、詳細は以下のリンクを参照願います。

また、色々なサイトでパラメータに関する記述があるので、興味がある方は検索してみて下さい。本記事では実際の業務を想定した必要なものをピックアップします。

 

異なるスキーマのオブジェクトをインポートする

記載だけを見ると「???」となる方も多いかもしれません。上司や先輩から「AスキーマをBスキーマに全部入れておいてね」と言われるのと一緒です。要約すると「『Aスキーマ』のオブジェクト全てを『Bスキーマ』にインポートすること」です。SQLコマンドは以下が例です。

imp DBユーザ名/DBパスワード@DB名称 file=c:\hoge.dmp log=c:\result.log fromuser=userA touser=userB

『 userA』の部分にエクスポート元のスキーマ名を記載し、『userB』にインポート先のスキーマ名を記載します。

 

異なるスキーマの指定したテーブルのみをインポートする

「このテーブルだけ別のスキーマに入れたい」場合があると思います。dmpファイルでそれを実行するには以下の様にSQLを記載します。

imp DBユーザ名/DBパスワード@DB名称 file=c:\hoge.dmp log=c:\result.log fromuser=userA touser=userB tables=(TABLE_HOGE1)

『 TABLE_HOGE』の部分にdmpからインポートしたいテーブル名を記載します。複数のテーブルをインポートしたい時は以下の様にSQLを記載して下さい。

imp DBユーザ名/DBパスワード@DB名称 file=c:\hoge.dmp log=c:\result.log fromuser=userA touser=userB tables=(TABLE_HOGE1,TABLE_HOGE2,TABLE_HOGE3,...)

 

レコードだけをインポートする 

「テーブルはあるから、レコードだけインポートしたい」場合があると思います。dmpじゃ無ければ『insert into ToHogeTabel select * from FromHogeTable』で大丈夫ですが、dmpの場合でも可能です。

imp DBユーザ名/DBパスワード@DB名称 file=c:\hoge.dmp log=c:\result.log rows=y tables=(TABLE_HOGE1)

rows』の部分がパラメータと呼ばれます。パラメータに値を設定するとオプション実行が行われます。『rows』パラメータは「テーブルのデータをインポートするか」という意味で、デフォルトでは設定されていません。『rows=n』がデフォルト設定です(yはyes、nはnoの意味です)。明示的に『rows=y』を設定することで、テーブルのデータをインポート出来ます。その時にテーブル名は指定して下さい。

 

まとめ

今回はインポートに関する応用編を少しだけ紹介させて頂きました。dmpがあるけれども、別のスキーマにインポートする時に失敗することはよくあることです。また、テーブルだけやレコードだけをインポートする時に躓く方も多いと思いますので、少しでもお役に立てたらと思います。パラメータは組み合わせれば奥が深いので、それは別の機会に紹介しようと思います。