Enterprise Managerを開いて画面からSQLLoaderを実行する方法(http://korokay-stakenote.blogspot.com/2008/06/oracle-10g-enterprise-manager-sqlloader.html)を載せたが、
以下の部分が面倒くさくていらいら。
- 自前の制御ファイルを利用しようとすると、データファイルをOracleを入れているサーバ内に入れないといけない。(面倒くさい)
- 画面遷移が。。。遅い!(サーバのせい?)
- とにかく時間がかかる。(画面遷移とステータス確認と、間違えたときに前の画面に戻る行為)
ということで、コマンドプロンプトを使ってSQLLoaderを実行することにした。
必要条件はTNSが設定されていること。(http://korokay-stakenote.blogspot.com/2008/06/windowsoracle-odbc.html 参照)
- コマンドプロンプトで必要な制御ファイル、データファイルを格納しているフォルダに移動
- C:\Documents and Settings\Administrator>cd Desktop\TestData
- 以下のコマンドを入力
- sqlldr username/password@TNSName control = xxxxx.ctl log = yyyyy.log
- *1.ctlファイルは1で移動したフォルダにあること。
- *2.ctlファイルの中で、データファイル名を記述しておくこと
- ---------------------------------------
- LOAD DATA
- INFILE 'CUSTOMER.csv'
- APPEND
- INTO TABLE CUSTOMER
- FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
- ( NAME CHAR,
- ADDRESS CHAR,...
- ---------------------------------------
- *3.logファイル名は任意で指定 log = yyyyy.log を宣言しないと、ログははかれない。
- ↓のようなプロセスが表示される
- -----------------------------------
- SQL*Loader: Release 10.2.0.1.0 - Production on 金 6月 13 09:29:08 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
コミット・ポイントに達しました。 - 論理レコード件数1コミット・ポイントに達しました。 - 論理レコード件数2 - -----------------------------------
- 処理が終わると、ログファイルがフォルダに格納されている。↓
- -----------------------------------
- レコード1: 拒否されました。- 表WCR_DT_DTCでエラーが発生しました。ORA-00001: unique constraint (SYS_C008070) violated
レコード2: 拒否されました。- 表WCR_DT_DTCでエラーが発生しました。ORA-00001: unique constraint (SYS_C008070) violated
レコード3: 拒否されました。- 表WCR_DT_DTCでエラーが発生しました。ORA-00001: unique constraint (SYS_C008070) violated
レコード4: 拒否されました。- 表WCR_DT_DTCでエラーが発生しました。ORA-00001: unique constraint (SYS_C008070) violated
表WCR_DT_DTC: 2行のロードに成功しました。 4行はデータ・エラーのためロードされませんでした。 0行はWHEN句のエラーのためロードされませんでした。 0行はすべてのフィールドがNULLのためロードされませんでした。 - -------------------------------------
以下、コマンドプロンプトのほうが使いやすいと判断した理由
- Oracleサーバにリモートでつないでいる場合でも、自分のPCにおいているファイルでインポート処理が完結すること。
- 処理が早い。実行分を秀丸マクロとかで大量に作っておけば、処理は簡単。
- ファイルの修正もしやすい(1の理由に準拠)
0 件のコメント:
コメントを投稿