SQL Loaderを使いたい

このQ&Aのポイント
  • Oracleのバージョンは8、自分のPCには Oracle8Client(Application User) がインストールされています。
  • SQL Loaderを利用できる環境になっていない可能性が一番高いです。
  • コマンドが間違っている可能性もあります。
回答を見る
  • ベストアンサー

SQL Loaderを使いたい

Oracleのバージョンは8、自分のPCには Oracle8Client(Application User) がインストールされています。 見よう見まねで制御ファイルを記述し、バッチファイルを作成したところ、 ( sqlldr USERNAME/PASSWORD@SID control= test.ctl ) コマンドプロンプトには以下のように表示されました。 「C:\SQL>sqlldr USERNAME/PASSWORD@SID control = test.ctl 'sqlldr' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。」 実行できない原因はどこにあるか教えてください。 1.そもそもSQL Loaderを利用できる環境になっていない (そのままでは使えなくて何かしら設定が必要とか) 2.コマンドがまちがっている (test.ctlのパスを記述しないとだめとか、SIDは要らないだとか) 3.制御ファイルがまちがっている どの可能性が一番高いでしょうか?

  • Oracle
  • 回答数3
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.3

Oracle8Client(Application User)だと SQL Loaderはインストールされないのではないでしょうか? Clientのインストール時に選択肢があって、 管理者用(正確な名称は覚えていない)でインストールする必要があったと思います。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 サーバーにsqlldr80.exeが確認できたので、やはり単なるユーザーには許されていないんですね・・。 管理者にやってもらうしかありませんね。

その他の回答 (2)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

#1 さんの回答にある通り、パスが通っていない、と言うのはあると思いますが、ちょっと違う視点で。 8i なのか、8 なのか、それにもよると思いますが、少なくとも 8 だとしたら、sqlldr.exe ではなく、sqlldr80.exe だったような気がします。 つまり、sqlldr80 USERNAME/PASSW... ではないかと。 すいません。以上、うろ覚えで答えます。 (さすがに今更、8のCD引っ張り出して環境を作る気にはならないので)

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 サーバーを確認したらおっしゃるとおり80でございました。

回答No.1

こんばんは。 パスが間違っている訳じゃないんですが・・・、 sqlldrだけでは認識できない(パスが通っていない)という事です。 [オラクルのインストールフォルダ]\ora[バージョン]\bin\SQLLDR.EXE から書き始めるといいでしょう・・・。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。 Ora/Binの中にそもそもありませんでした。とほほ。

関連するQ&A

  • SQL-Loaderが動かないです。

    みなさんこんにちは 作成されたデータをSQL-Loaderにてオラクルデータベースに取込み を行います。 下記にソースを書きましたが、まずTEST.batファイルを実行し、 TEST.bat側からTEST.ctlを実行し、TEST_WORKテーブルにデータを 格納します。 *****TEST.batの内容***** SQLLDR USERID=TEST1/TEST1@GUEST CONTROL=TEST.ctl LOG=LOG.txt ************************ *****TEST.ctlの内容***** LOAD DATA INFILE 'D:\test1.dat' TRUNCATE PRESERVE BLANKS INTO TABLE TEST_WORK FIELDS TERMINATED BY "|" TRAILING NULLCOLS (KOUMOKU1, KOUMOKU2, KOUMOKU3, KOUMOKU4) ************************ 実際にこれを実行した所、問題なく正常終了しました。 しかし、これをホスト側からFTPにて実行を行うと、 TEST.batが実行されません。もちろんログも出力されません。 ファイルが実行できてないので、ファイルのコピーを行う簡単 なバッチファイルを作成し、ホスト側から実行を行ってもらった 場合、こちらは問題ありませんでした。 となると、SQL-Loaderのソースに何か問題があるのでは?と 思いますが・・・色んなサイトでLoaderのソースを拝見しましたが、 見当がつかないです。 ソースを見て、気になる点や、同じ経験をされた方いらっしゃい ましたら、お知恵をお貸しください。 ちなみに、SQL-Loaderを実行するマシンのOSはWindows2000Proです。 よろしくお願いします。

  • SQL*Loaderの事で

    SQL*Loaderを使用してあるアイテムに固定文字を登録をしたいのですがxxxxxx.csvでなくxxxxxx.ctlで可能でしょうか? 例) -- xxxxx.ctl -- USERDATE SYSDATE USERNAME char -- xxxxx.csv -- "Process" USERNAMEに"Process"と固定的に登録は出来ませんか?

  • SQL*Loaderで既存のレコードの更新

    SQL*Loaderで既存のレコードがあったらUpdate処理を行いたいのですが 「Oracle7 Server ユーティリティ」に SQL*Loaderは、既存レコードがNULL列であったとしてもレコードを更新しません。 既存の行を更新するには、次の手順を利用してください。 1.データを一時表にロードする 2.相関副問合わせを持つSQL言語のUPDATE文を使用する 3.一時表を削除する とありますが、上記の1~3が具体的にどうすれば良いのか分りません・・・ 1.データとは、テーブルのデータ?それともロードファイルのデータ??   3.に削除とあるので、作成するのでしょうか?? 2・これはctlファイルに記述するでいいのでしょうか?? 記述の仕方は?? 3.ドロップコマンドはctlに記述でよろしいのでしょうか?? などなど・・ すみません、ご教授お願いできませんか??

  • SQL*Loaderでのデータロード

    SQL*Loaderでデータロードを実行するとき ロードするテキストファイルのある列の部分が スペースのとき、テーブルで設定したデフォルト値 をロードさせたいのですが、どうCTLファイルで記述 すればよいのですか? 教えてください。おねがいします。

  • SQL*Loaderをダイレクトモードで実行

    するにはどうしたらいいのでしょうか? 例えば以下の場合にダイレクトモードでSQL*Loaderするにはどうしたらいいのでしょうか? sqlldr sato/secret control=x.ctl ただし x_table: create table x_table(i number,s varchar(99)); x.ctl: LOAD DATA INFILE 'x.csv' APPEND INTO TABLE x_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( i,s ) x.csv: 1,"it is iti." 2,"it is ni." 3,"it is san."

  • ShellでSQL*loaderのエラー処理

    掲題のとおりですが、 どのように記述したらよいのでしょうか sqlldr userid=scott/tigar@DB control=AAA.ctl log=BBB.log ⇒ここでエラーの有無を取得したい どなたかわかる方いればお願いします。

  • SQL*Loaderの中断について

    SQL*Loaderの中断について シェルから子シェルを非同期で多重起動し、子シェルで SQL*Loaderのコマンドをかけています。 (子シェル内でもループで複数回コマンド実施) 実行中に親プロセスをCtrl+Cで殺します。 子シェルは投げられた分だけ実行するのはいいのですが、 Loaderの戻り値を受けて完了ファイルを書くのですが、 Ctrl+Cで中断されたLoaderのログがあるにもかかわらず 正常で帰ってきているものがあります。 ログに中断されたロードと出ているにも関わらず、 正常の戻り値ってありえますか? よろしくお願いします。

  • データ削除とSQL*Loaderでのインポート

    SQL*Loaderを使ってデータをインポートするのですが、既存データが存在するテーブルにインポートするため、実行前に、条件に一致する一部のデータを削除します。 ですが、SQL*Loaderでインポートが失敗した際には、元に戻したいと思っています。 そういう場合に、SQL*PlusからDELETEのSQL文を実行してから、SQL*Loaderを起動してインポートするとなると、SQL*Plusから抜けた時点でCOMMITされてしまいますよね?そのためSQL*LoaderでインポートがエラーになってROLLBACKされても、削除されたデータは元に戻らないですよね・・・。 全件削除なら、CTLファイル内でREPLACEを指定してインポートするのですが・・・ データの一部削除とSQL*Loaderでのインポートを一連の処理として、エラーの際にはROLLBACKさせられる方法はありますでしょうか? よろしくお願いします。

  • sql*loader 数値のロード

    SQL*LOADERにて NUMBER(3,0)のフィールドに、小数点以下を含む数値をもったデータをロードすると 四捨五入か何かされて整数でデータがロードされてしまいます。 テーブル、CTLファイル、csvレコード、登録結果は以下のとおりです。 テーブル: CREATE TABLE tbl1 ( CLM001 NUMBER(3,0) NOT NULL, CLM002 VARCHAR2(30) ) CTLファイル: LOAD DATA INFILE 'tbl1.csv' BADFILE 'tbl1.bad' TRUNCATE INTO TABLE tbl1 FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( CLM001, CLM002 ) csvレコード: 0.9,aaaaa 3.1,bbbbb 登録結果(SQL*LOADER実行結果): 1,aaaaa 3,bbbbb 小数点を含むデータをロード時にエラーとしたいのですが、何かいい方法ありますでしょうか? 環境はSQL*Loader: Release 9.2.0.1.0になります。

  • SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい

    お世話になります、 以下のようにデータをSQLLDRでインサートしようと思っているのですが、複数のCSVファイルのデータを一つのテーブルにInsertしたい場合にどのようにすればいいか教えてください。 --バッチファイル sqlldr userid=fmwuser/fmwuser@fmw001 control=ctl/AUTHORITY.CTL log=section1.log data=csv/AUTHORITY.csv --CTLファイル LOAD DATA TRUNCATE INTO TABLE AUTHORITY FIELDS TERMINATED BY ',' ( AUTHORITYCODE ,AUTHORITYNAME,EXECUTIVE) CTLファイルでTRUNCATEを付けるとテーブルを初期化してからインサートするからむりですよね... TRUNCATEをはずすと、データが入っているテーブルに対してSQLLDRは使用できないと怒られるし... CSVファイルを一つにまとめるしかないのでしょうか?