|
分類:[C#]
こんにちは。
OracleDB(10g)へデータを取り込むために、 C#からSQL*LOADERを使用してデータを登録してます。
コードは下記のようになっています。 =============================================== public static void ProcStart( ) { ProcessStartInfo hProcess = new ProcessStartInfo( ) ;
hProcess.FileName = @"sqlldr.exe"; hProcess.Arguments = @"ユーザ/パス@サービス名 control=D:\\コントロール.ctl log=d:\\logfile.log"; hProcess.RedirectStandardInput = false ; hProcess.RedirectStandardOutput = true ; hProcess.UseShellExecute = false ; hProcess.CreateNoWindow = true ;
// プロセス起動 Process Pro = Process.Start(hProcess) ;
// 終了まで待機 Pro.WaitForExit( ) ;
return; } =============================================== 少ないデータだと特に問題はなかったのですが、 今回少し大きめのデータ(と言っても20000行程度)を登録しようとしたときに、 SQL*LOADERが固まっているようなのです。(insert途中なのにCPU使用率0%でデータが登録できてない)
現象としては @途中まで登録でき、何回か試しても同じ行で止まってしまう。 ASQL*LOADERの起動元プロセスをタスクマネージャで終了させると続きが実行される。 BC#からではなく、コマンドプロンプトより実行すると全く問題なく終わる。 C20000行だと途中で止まるが、5000行ずつ4回に分けると登録できる。
@の現象からデータの問題も考えたのですが、Cを考えるとデータの問題ではなさそうです。 Aの現象からSQL*LOADERが悪いわけではなく、C#側に問題があるのかと思ったのですが 検討がつきませんでした。 ご存知の方、もしくは思い当たることがありましたら、 ご教示お願いいたします。
|