インポートとは、エクスポートしたファイル内のデータをデータベースに読み込んでデータを復元することである。
Oracleデータベースにインポートするコマンドには次のものがある。
| コマンド | 説明 |
|---|---|
| imp | インポート・ユーティリティ (後方互換性のために残されている古いコマンド) |
| impdp | インポート・ユーティリティ |
impdpはexpdpコマンドでエクスポートしたファイルからデータをOracleデータベースに読み込ませるインポート・ユーティリティである。
impdp コマンドには以下に示すオプションを指定する。
| 値 | 説明 |
|---|---|
| all | 定義とデータ(デフォルト) |
| metadata_only | オブジェクト定義のみ |
| data_only | 表のデータのみ |
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp full=y exclude=INDEX
| 値 | 説明 |
|---|---|
| truncate | 既存データをtruncateしてからインポートする |
| replace | 既存の定義をdropしてからインポートする |
| append | 既存のデータはそのままにインポートする |
| skip | 既存の定義とデータはそのままで、次のオブジェクトのインポートに移る |
| 値 | 説明 |
|---|---|
| YES | ログファイルを出力しない |
| NO | ログファイルを出力する(デフォルト) |
インポート対象を以下に示すオプションで指定する。インポート対象は以下のうちいずれかひとつだけ指定する。
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp full=y
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp schemas=tsuka
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp tablespaces=tbs01
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp tables=emp
$ impdp tsuka/mellon directory=data_pump_dir dumpfile=exp.dmp remap_schema=tsuka:emily
$ 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とは、expコマンドでエクスポートしたファイルからデータをOracleデータベースに読み込ませるインポート・ユーティリティである。
imp [user/password] keyword=value ...
ユーザ名を指定する。「USERID=user/password」で指定してもよい。
パスワードを指定する。「USERID=user/password」で指定してもよい。
キーワードと、その値を指定する。空白で区切って、複数指定できる。
| キーワード | 説明 |
|---|---|
| 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