Oracleデータベースのインポート

インポートとは、エクスポートしたファイル内のデータをデータベースに読み込んでデータを復元することである。

インポートのコマンド

Oracleデータベースにインポートするコマンドには次のものがある。

インポートのコマンド
コマンド 説明
imp インポート・ユーティリティ (後方互換性のために残されている古いコマンド)
impdp インポート・ユーティリティ

impdp

impdpはexpdpコマンドでエクスポートしたファイルからデータをOracleデータベースに読み込ませるインポート・ユーティリティである。

impdp コマンドには以下に示すオプションを指定する。

directory
インポートファイルが置いてあるディレクトリを、DIRECTORY オブジェクト名で指定する。
dumpfile
インポートファイルのファイル名を指定する。
logfile
インポート時のログファイル名を指定する。ログファイル名の指定を省略した場合、ログファイル名は import.log となる。
content
インポート対象を指定する。
content
説明
all 定義とデータ(デフォルト)
metadata_only オブジェクト定義のみ
data_only 表のデータのみ
exclude
インポートから除外するオブジェクトを指定する。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp full=y exclude=INDEX
parfile
パラメータファイルを指定する。
table_exists_action
インポート先に既に定義やデータが存在した場合の動きを指定する。
table_exists_action
説明
truncate 既存データをtruncateしてからインポートする
replace 既存の定義をdropしてからインポートする
append 既存のデータはそのままにインポートする
skip 既存の定義とデータはそのままで、次のオブジェクトのインポートに移る
nologfile
インポート実行時のログを出力するかどうかを指定する。
nologfile
説明
YES ログファイルを出力しない
NO ログファイルを出力する(デフォルト)

インポート対象を以下に示すオプションで指定する。インポート対象は以下のうちいずれかひとつだけ指定する。

full
データベース全体をインポートする時に y を指定する。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp full=y
schemas
スキーマ単位でインポートする。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp schemas=tsuka
tablespaces
表領域単位でインポートする。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp tablespaces=tbs01
tables
テーブル(表)単位でインポートする。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp tables=emp
remap_schema
異なるスキーマへインポートする。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp remap_schema=tsuka:emily
remap_tablespace
異なる表領域へインポートする。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp remap_tablespace=tbs01:tbs02

impdpでインポートを行う場合、ディレクトリ・オブジェクトの作成と権限の付与が必要である。

SQL> CREATE OR REPLACE DIRECTORY data_pump_dir AS '/home/datapump';
SQL> GRANT READ, WRITE ON DIRECTORY data_pump_dir TO tsuka;

imp

impとは、expコマンドでエクスポートしたファイルからデータをOracleデータベースに読み込ませるインポート・ユーティリティである。

imp [user/password] keyword=value ...
user

ユーザ名を指定する。「USERID=user/password」で指定してもよい。

password

パスワードを指定する。「USERID=user/password」で指定してもよい。

keyword=value

キーワードと、その値を指定する。空白で区切って、複数指定できる。

impコマンドに指定できるキーワード
キーワード 説明
USERID ユーザ名/パスワード
BUFFER バッファのサイズをバイト単位で指定する。
デフォルトは4096バイトであるが、この値は小さすぎてインポートに時間がかかるため、大きな値を指定した方がよい。
FILE 入力ファイル
SHOW ファイル内容の表示のみ
IGNORE インポートするオブジェクトが既に存在していた場合の対応
y: インポートする。
n: エラーを報告して、インポートをスキップする。
GRANTS 権限のインポート
INDEXES 索引のインポート
LOG 画面出力のログファイル
ROWS y: 既に存在するテーブルにレコードをインポートする。
FULL ファイル全体のインポート
FROMUSER 所有するユーザのリスト
TOUSER ユーザ名リスト
TABLES 表名のリスト
RECORDLENGTH I/Oレコードの長さ
INCTYPE 増分インポートの種類
COMMIT 配列挿入時のコミット
PARFILE パラメータファイル名
CONSTRAINTS 制約のインポート
DESTROY 表領域データファイルの上書き
INDEXFILE 指定ファイルの表/索引情報の書き込み
SKIP_UNUSABLE_INDEXES 使用不可の索引のメンテナンスをスキップ
FEEDBACK n行ごとに進行状況を表示
TOID_NOVALIDATE 指定したタイプIDの検証をスキップ
FILESIZE 各ダンプファイルの最大サイズ
STATISTICS 計算済み統計情報のインポート
RESUMABLE 領域関連のエラーが発生すると一時停止する
RESUMABLE_NAME 再開可能文の指定に使用するテキスト文字列
RESUMABLE_TIMEOUT RESUMABLEの待機時間

既に存在するテーブルにレコードをインポートする。

$ imp tsuka/mellon file=/home/tsuka/emp.dmp rows=y ignore=y tables=emp buffer=1048576

関連記事