ORACLE_LOADER ドライバー( SQL*Loader 含む)は
文字 “列” に対応できるが、これで常に解決できるわけではない
例)フィールド終端 : ,,
abc,,def,,1,234 ← 一見良さそう uvw,,xy,,,7,890 ← 想定外の区切り 文字列にしても解決できない
uvw xy ,7,890
区切りがずれている
正しいアプリケーション実装
終端記号にマイナーな ASCII 制御文字を使用できないシステムでは 少なくとも 2 個の印字可能文字は、データに含まれないように
RDBMS からの入力時 / RDBMS からの出力時に置き換える
– ISO10646 文字実体参照 : , → ,
– SQLインジェクション対策に合わせて実装する
知っておきたい便利な使い方
複数の表を Export し、データのみを Import したい
複数の表をExportし、データの みを
Import
したいが、外部キー が多数あり、整合性制約に違反 してしまう・・・COMMAND> expdp system/manager ;
SQL> alter table emp disable constraint emp_no_fk ;
・・・関連するすべての参照整合性約を
disable
に設定しますCOMMAND> impdp system/manager ;
SQL> alter table emp enable constraints emp_no_fk ;
・・・関連するすべての参照整合性約をenableに設定します
以下のように、関連する参照整合性制約を
disable
し、Import
後に 参照整合性制約をenable
にすると、エラーを解消できますオリジナル / Data Pump
Export ダンプから一部データを取り出す方法
誤って一部データをdeleteし、
commit してしまった!!
エクスポートのダンプ・ファイル から取り出したい・・・
COMMAND> impdp system/manager
remap_schema=oradirect:dummy
SQL> insert into oradirect.emp select * from dummy.emp where emp_id=100;
SQL> drop table dummy.emp
SQL> delete from oradirect.emp
where emp_id=100;
SQL> commit;
以下のように削除したデータを
エクスポートのダンプ・ファイルより取り出せます
!
注)エクスポートした時点のデータと削除したデータが一致するかは不明であるため、
この例の場合emp_id=100のデータに関して、 エクスポート時と誤って削除した時が 同じであったことを前提と しています
オリジナル / Data Pump
索引作成文を受け取る方法 -オリジナル-
エクスポート・ファイルの CREATE TABLE 文もコメ ントとして含まれます!
オリジナル
Option INDEXFILE
デフォルト なし
用途 索引作成文を受け取るファイルを指定します
使用例
imp scott/tiger TABLES=(wendy.emp) INDEXFILE=‘index.txt’
さらに Data Pump ではすべての SQL 文を 受け取れます
Data Pump
Option SQLFILE
デフォルト なし
用途 インポートが他のパラメータに基づいて実行するすべてのSQL DDLの書込み先の ファイルを指定します
使用例
impdp scott/tiger TABLES=(wendy.emp) SQLFILE=‘index.txt’
注意:
パスワードは、SQLファイルに含まれないことに注意してください たとえば、実行したDDLにCONNECT文が含まれている場合、
その文はコメントで置き換えられ、スキーマ名のみが表示されます
例: TEST_TABLE 表をインポートする際の SQLFILE を受け取る場合
impdp oradirect/oradirect dumpfile=test_table.dmp tables=test_table sqlfile=sqlfile.txt
SQLFILE の一例
Data Pump
CREATE TABLE
文やCREATE INDEX
文を 確認する事ができますさらに
INSERT
文も 確認する事ができますData Pump 圧縮
ドキュメント内
スライド 1
(ページ 78-86)