ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: ダンプファイルから、別スキーマへテーブルコピー
名前: lightbox
処理選択
パスワード

件名 ダンプファイルから、別スキーマへテーブルコピー
名前 lightbox
コメント
@DIV
実際問題環境の移動はこの方法が最も一般的ですが、Oracle を良く知っていないとなかなかうまく
行かなかったりしますのであまりおすすめではありませんが、テーブル単位ならば
もし失敗しても被害が少ないので知っておいてもいいと思います。
@END


[[imp.par]]
@DIV
DIRECTORY=MYDIR
DUMPFILE=ORA01.dmp
TRANSFORM=SEGMENT_ATTRIBUTES:n
REMAP_SCHEMA=ORA01:JET
TABLES=社員マスタ,商品マスタ
TABLE_EXISTS_ACTION=REPLACE
@END
※ ORA01 でエクスポートされたテーブルを JET というスキーマ環境に作成します

このパラメータファイルは、テーブルを常に置き換えるので、テストで書き換えられた
テーブルをリセットするのに使うと良いと思います。

@C:red(注意) この処理は SYSTEM ユーザで行って下さい。
もし SYSTEM ユーザが使え無いのであれば、この方法以外を考えたほうが良いと思います。


@DIV
impdp system/manager@//night/XE PARFILE=imp.par
@END

TABLE_EXISTS_ACTION には他にも以下のようなものがあります
@DIV
SKIP: 表はそのままにして、次のオブジェクトに移動します。
(CONTENTパラメータがDATA_ONLYに設定されている場合、このオプションは無効です。)

APPEND: ソースから行をロードし、既存の行は変更しません。

TRUNCATE: 既存の行を削除した後、ソースから行をロードします。
@END


ちなみに、以下の PARFILE で CREATE 文を出力すると、スキーマ名が JET になっています
@DIV
DIRECTORY=MYDIR
DUMPFILE=ORA01.dmp
TRANSFORM=SEGMENT_ATTRIBUTES:n
REMAP_SCHEMA=ORA01:JET
TABLES=社員マスタ,商品マスタ
SQLFILE=MYDIR:ddl.txt
@END

@DIV
-- CONNECT SYSTEM
-- new object type path is: SCHEMA_EXPORT/TABLE/TABLE
CREATE TABLE "JET"."商品マスタ" 
   (	"商品コード" VARCHAR2(4), 
	"商品名" VARCHAR2(75), 
	"在庫評価単価" NUMBER, 
	"販売単価" NUMBER, 
	"商品分類" VARCHAR2(3), 
	"商品区分" VARCHAR2(1), 
	"作成日" DATE, 
	"更新日" DATE, 
	"備考" VARCHAR2(2000), 
	"削除フラグ" VARCHAR2(1)
   ) ;
 
CREATE TABLE "JET"."社員マスタ" 
   (	"社員コード" VARCHAR2(4), 
	"氏名" VARCHAR2(50), 
	"フリガナ" VARCHAR2(50), 
	"所属" VARCHAR2(4), 
	"性別" NUMBER(1,0), 
	"作成日" DATE, 
	"更新日" DATE, 
	"給与" VARCHAR2(255), 
	"手当" VARCHAR2(255), 
	"管理者" VARCHAR2(4), 
	"生年月日" DATE
   ) ;
 
-- new object type path is: SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
ALTER TABLE "JET"."商品マスタ" ADD PRIMARY KEY ("商品コード") ENABLE;
 
ALTER TABLE "JET"."社員マスタ" ADD PRIMARY KEY ("社員コード") ENABLE;
@END 


http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_import.html(Data Pump Import)