- PR -

VB.NETにインポート機能を付けたい

投稿者投稿内容
ふむふむ
会議室デビュー日: 2004/06/02
投稿数: 14
投稿日時: 2004-06-02 10:45
はじめまして宜しくお願いします。
VB.NETとOracle9iを使っています、
VB.NETからCSVファイルをインポートし、Oracleテーブルに追加という
ことをしたいのですが、手法が分かりません。
Shell関数を使ってプロンプトで操作するようなことが書かれていたので
挑戦してみましたが追加されませんでした。

【インポート】
Call Shell("C:\oracle\ora92\bin\sqlldr userid = ID/Pass@test control=C:\oracle\table_.ctl", AppWinStyle.Hide, True)

どなたか分かる方がいましたら、教えてください。
宜しくお願いします。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-06-02 11:26
SQL*Loaderについてはご存知ですか?
プログラムからではなく、プロンプトからSQL*Loaderを実行した場合はうまく動きましたか?
ふむふむ
会議室デビュー日: 2004/06/02
投稿数: 14
投稿日時: 2004-06-02 11:50
たーぞう様、お疲れ様です。

SQL*Loaderは甘いかも知れませんが、自分なりに調べ、
先にプロンプトから直接入力し、実行できるか調べてみました。
すると、OracleのテーブルにCSVファイルのデータが追加
出来たので、VB.NETで挑戦!と思ったらインポートされず
構文がいけないのかな?と困り中でした。

たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-06-02 12:57
Shell関数で、SQL*Loaderは動いていますか?
何らかのエラーメッセージが出ていませんか?
ふむふむ
会議室デビュー日: 2004/06/02
投稿数: 14
投稿日時: 2004-06-02 13:21
返信ありがとうございます!

今、VB.NETからプロンプトを見ようとしたのですが、

Shell("C:\oracle\ora92\bin\sqlldr.exe userid = userid/pass@test control=C:\oracle\table.ctl", AppWinStyle.NormalFocus)

このAppWinStyle.以降の型をいろいろ変えてみたのですが、
実行し終了すると即効ウィンドウが閉じてしまうので
確認できないのですが、プロンプトをずっと開いたままの状態に
するにはどうしたらいいのでしょうか・・・。

たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-06-02 13:45
それでは、

Shell("C:\oracleora92binsqlldr.exe userid = userid/pass@test control=C:\oracletable.ctl log=log.txt > err.txt", ・・・)

のように、コマンドの最後に "log=log.txt > err.txt" を追加して実行してみてください。
log.txt またはerr.txtというファイルにメッセージが出力される・・・かな?(不確実なので違っていたらごめんなさい)

[ メッセージ編集済み 編集者: たーぞう 編集日時 2004-06-02 13:51 ]
ふむふむ
会議室デビュー日: 2004/06/02
投稿数: 14
投稿日時: 2004-06-02 14:13
たびたび申し訳ありません。

エラーログが出来ていました。そのままコピーしてしまいます。

---------------------Err Log-----------------------------------
SQL*Loader: Release 9.2.0.1.0 - Production on 水 Jun 2 13:46:26 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

制御ファイル: C:\oracle\table.ctl
データ・ファイルmove.csv
不良ファイル: C:\oracle\move.bad
廃棄ファイル: 指定なし

(すべて廃棄できます)

ロード数: ALL
スキップ数: 0
許容エラー数: 50
バインド配列: 64行、最大256000バイト
継続文字: 指定なし
使用パス: 従来型

表MOVE、 ロード済 すべての論理レコードから
この表に対する有効な挿入オプション: APPEND
TRAILING NULLCOLSオプションは有効です。

Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
M_ID FIRST * , O(")CHARACTER
M_TITLE NEXT * , O(")CHARACTER
M_KOUKAI NEXT * , O(")CHARACTER

SQL*Loader-500: ファイル(move.csv)をオープンできません
SQL*Loader-553: ファイルが見つかりません。
SQL*Loader-509: システム・エラー: 指定されたファイルが見つかりません。
SQL*Loader-2026: SQLローダーが続行できないため、ロードは異常終了しました。

表MOVE:
0行のロードに成功しました。
0行はデータ・エラーのためロードされませんでした。
0行はWHEN句のエラーのためロードされませんでした。
0行はすべてのフィールドがNULLのためロードされませんでした。

バインド配列に割り当てられた領域: 49536バイト(64行)
読込みバッファのバイト数: 1048576

スキップされた論理レコードの合計: 0
読み込まれた論理レコードの合計: 0
拒否された論理レコードの合計: 0
廃棄された論理レコードの合計: 0

実行開始水 Jun 02 13:46:26 2004
実行終了水 Jun 02 13:46:29 2004

実行時間: 00: 00: 02.44
CPUタイム : 00: 00: 00.09
---------------------Err Log-----------------------------------
CSVファイルがみつかりませんとありましたが、ファイルは
table.ctlと同じフォルダにあります。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-06-02 14:28
コントロールファイルの内容はどうなっていますか?
move.csvファイルにはパスの指定(C:\oracle\move.csvというように)がしてありますか?

スキルアップ/キャリアアップ(JOB@IT)