タイトル
TOPOracle → This Page

インポート(IMPORT)

概要

IMPORTはOracleが標準で提供するユーティリティ。
EXPORTユーティリティで出力したエクスポート・ダンプ・ファイルからオブジェクトや行データなどを取り込むことが可能。

お手軽ですが、Oracle 10g からは Data Pump Export/Import の使用が推奨されています

コマンド

IMPORTは imp コマンドで実行可能
実行方法は以下の3つがある。

imp
順に問い合わせされるパラメータを入力していく対話方式。

imp パラメータ名=パラメータ値 [,パラメータ名=パラメータ値,...]
コマンドの後ろに各種パラメータを付加して実行する。

imp parfile=パラメータファイル
前もってパラメータを記述したファイルを指定して実行する。

モード

モードには以下の4つがある。

・全体モード
 データベース全体のインポート
・表領域モード
 指定表領域のインポート
・ユーザ・モード
 指定ユーザのスキーマにある全てのオブジェクトをインポート
・表モード
 指定表およびパーティションのインポート

権限

実行には CREATE SESSION 権限が必要。
実行モードを全体モードで実行する場合は IMP_FULL_DATABASE ロールも必要。
実行モードを表領域モードで実行する場合は IMP_FULL_DATABASE ロールも必要。
実行モードをユーザ・モード、かつ別ユーザのオブジェクトをインポートする場合は IMP_FULL_DATABASE ロールも必要。

パラメータ一覧

パラメータ
(※1)
デフォルト説明
BUFFER NUMBER ※2 転送したデータ行を格納するバッファのバイト数
COMMIT y/n n 配列を挿入するたびにコミットするかどうか
COMPILE y/n y パッケージ、プロシージャ、ファンクションを作成時にインポート・ユーティリティでコンパイルするかどうか
CONSTRAINTS y/n y 表制約をインポートするかどうか
DATAFILES STRING - データベースに転送するデータ・ファイル
TRANSPORT_TABLESPACE=Y の場合に指定必須
DESTROY y/n n 既存のデータファイルを上書きするか
FEEDBACK NUMBER 0 指定した値の行数をインポートする毎に「.」を表示
FILE STRING expdat.dmp インポートするエクスポート・ダンプ・ファイル名
半角カンマ区切りで複数ファイルの指定も可能
(FILESIZEパラメータと組み合わせて使用する)
FILESIZE NUMBER ※2 エクスポート時の最大ダンプ・ファイル・サイズ(バイト)
キロバイト指定も可能(10KBなど)
FROMUSER STRING - インポート対象となるオブジェクトを所有するユーザ
半角カンマ区切りで複数指定可能(例を参照)
FULL y/n n FULL=y を指定すると全体モードでのインポートとなる
FULL=y を指定する場合は TABLES、TABLESPACES、TOUSERパラメータは無効となる
GRANTS y/n y 権限をインポートするかどうか
HELP y/n - HELP=Y でヘルプ表示
IGNORE y/n n インポートしているオブジェクトが既に存在していた場合の対応方法
y:行が既存の表にインポートされる
n:エラーがレポートされ、スキップされる
INDEXES y/n y 索引をインポートするかどうか
INDEXFILE STRING - 索引作成SQL文を受け取るファイル名
LOG STRING - ログ出力する場合の出力ログファイル名
PARFILE STRING - パラメータファイル名
ROWS y/n y 表のデータ行をインポートするかどうか
SHOW y/n n エクスポート・ダンプ・ファイルの内容を画面表示するかどうか
y:画面に表示する&インポートされない(←要注意!)
n:画面に表示されない&インポートする
STATISTICS ALWAYS
NONE
SAFE
RECALCULATE
ALWAYS データベース・オプティマイザ統計情報のインポート方法
STATISTICS=ALWAYS は問題があっても常に取り込む
STATISTICS=NONE は取込・再計算をしない
STATISTICS=SAFE は問題がない場合のみ取り込む
STATISTICS=RECALCULATE は取り込まずに再計算する
TABLES STRING - インポートの対象となる表名、パーティション名を指定
半角カンマ区切りで複数指定可能
指定すると表モードでのインポートとなる
FULL=y を指定する場合は無効となる
TABLESPACES STRING - インポートの対象となる表領域名を指定
半角カンマ区切りで複数指定可能
指定すると表領域モードでのインポートとなる
FULL=y を指定する場合は無効となる
TOUSER STRING - インポート先の対象となるユーザ
指定するとユーザ・モードでのインポートとなる
半角カンマ区切りで複数指定可能(例を参照)
FULL=y を指定する場合は無効となる
TRANSPORT_TABLESPACE y/n n トランスポータブル表領域のメタデータをインポートするかどうか
USERID STRING - インポート処理を実行するユーザーの接続情報
username/password[@instance][ AS SYSDBA] 形式で指定
※1 NUMBER:数値、STRING:文字列、y/n:yまたはn
※2 OSによって異なる
※ 他にもパラメータはありますが独断と偏見で「あまり使わない」と判断したものは省略しています

実行例

全体モードでインポート
imp usr1/pass1@db1 file=c:\full1.dmp full=y

ユーザ・モードでインポート
usr2のオブジェクトをusr3へ
imp usr2/pass2@db2 file=c:\full2.dmp fromuser=usr2 touser=usr3

ユーザ・モードでインポート
usr5のオブジェクトをusr7、usr6のオブジェクトをusr8へ
imp usr3/pass3@db3 file=c:\full3.dmp fromuser=usr5,usr6 touser=usr7,usr8

表モードでインポート
imp usr4/pass4@db4 file=c:\tbl4.dmp rows=y tables=(tbl1, tbl2)

レコードだけをインポート(表は既に存在する)
imp usr5/pass5@db5 file=c:\tbl5.dmp rows=y ignore=y tables=tbl5

バッファを使って高速化(1MBごとにコミット)
imp usr6/pass6@db6 file=c:\tbl6.dmp rows=y ignore=y buffer=1048576 commit=y tables=tbl6

注意点

上位バージョンのエクスポートで生成したエクスポート・ダンプ・ファイルを、下位バージョンのインポートで使用することはできない。

インポート高速化

索引があるテーブルへデータをインポートする場合、
インポート元テーブルの索引を削除してからインポートを実行すると通常よりインポート時間を短縮できる
(レコード数が少ない場合はあまり効果がない)

手順
・移行元データベースでINDEXES=Yを指定してエクスポートを実行
・移行先データベースで対象テーブルの索引を削除
・移行先データベースでINDEXES=Yを指定してインポートを実行
 →行データ挿入完了後、自動的にインデックスが作成される

リンク

更新履歴

2012/03/08 「STATISTICS」を追加
2012/02/01 実行例を追加
2010/02/11 新規作成


TOPOracle → This Page