SESEのキャリア

【Oracle備忘録】ダンプを別スキーマにテーブル指定でインポート

Oracleで、ダンプを別スキーマにテーブル指定でインポートしたい!

ひよこSE(@PiyoOct)は、別スキーマにダンプをインポートしたことはあるのですが、テーブル指定は初めてだったので、ハマりました(´▽`*)。

▼とっとと結論教えろよという人向け

impdp ユーザ/パスワード@識別子 remap_schema=元のスキーマ:別のスキーマ tables=(テーブル名をカンマ区切り)

※細かいところは空気を読んでくださいまし(-_-;)

ちょこっとリファレンスさんの説明を見れば、理解できなきゃダメだけどホントにおバカ。

スポンサーリンク

ダンプを別スキーマにテーブル指定でインポートするコマンド

・・・ひよこSEの前置きはどうでもいいと思うので、結論を書きますね。

impdp ユーザ/パスワード@識別子 remap_schema=元のスキーマ:別のスキーマ tables=(テーブル名をカンマ区切り)

※ローカルで実行する前提で書いたので、細かいところは空気を読んでくださいまし(-_-;)

なんでこんなことがわからなかったかって?

Oracleのダンプのインポートは、「スキーマ指定とテーブル指定は併用できない」のですよ。

つまりは、「shemas:なんちゃら」と「tables(A,B,C)」は併用できません。

※メッセージは忘れましたが、「同時に使えない( `ー´)ノ」みたいに、ふつうに怒られます。

テーブル指定で別スキーマにインポートするときは、てっきり、「remap_schemaは指定できない」と勘違いしちゃったわけです。

んで、tables=(別スキーマ.テーブル1, 別スキーマ.テーブル2,・・・)みたいに指定してエラー。

当たり前だけど、ダンプには、元のスキーマの情報しかないので、「そんなもんねぇよ( `ー´)ノ」って怒られます。

控えめに言ってアホですね。はい(´▽`*)。

スポンサーリンク

別スキーマにテーブル指定でインポートするときの使用例

よくわかんないから、雰囲気を書いてよ!

わかりました。

コマンドの使用例を書きますが、前提条件はこんな感じだと思ってください。

  • ユーザー:user
  • パスワード:password
  • 識別子:AA
  • 元の(エクスポートした)スキーマー:schema1
  • 別の(インポートしたい)スキーマー:schema2
  • インポートするテーブル:table1,table2,table3

impdp user/password@AA remap_schema=schema1:schema2 tables=(table1,table2,table3) directory=DATA_PUMP_DIR table_exists_action=replece

※directoryとtable_exists_actionは、ほとんどの人が記述すると思うので勝手につけました。

これで、乗り越えられると思います。

ダンプをスキーマごとインポートするコマンド【おまけ】

ついでですが、ダンプを別スキーマにスキーマごとインポートするコマンドも書いときます。

impdp user/password schemas=権限あればどこでもいい directory=DATA_PUMP_DIR table_exists_action=replece

個人的には、一番よく使う組み合わせのコマンドですね。

schemasは、指定しなくても空気読んでくれる(正確に言えば、元のスキーマになる)けど、書いた方が安心できるし。

というわけで、「schemas」と「remap_schema」のちがいが理解できていなかった、動物のお話でした。

スポンサーリンク

▼この記事がいいと思ったら、下の画像をクリックしてくれたら励みになります!

にほんブログ村 IT技術ブログ システムエンジニアへ

コメント

タイトルとURLをコピーしました