4

javaプログラムを介してsqlローダーを使用して、Oracleデータベースにcsvファイルをロードしようとしています。runコマンドで正常に実行できましたが、Javaプログラムを介してcsvファイルのデータをデータベースにロードしたいです。私のプログラムは次のとおりです。

  1. loadCsv.csv:

    ID,firstName,LastName,Address
    1,aditya,kumar,gaya
    2,abhijeet,chanda,kol
    3,Rahul,Jordar,kol
    
  2. トライアル.ctl:

    LOAD DATA
    INFILE loadCsv.csv
    BADFILE trial.bad
    DISCARDFILE trial.dsc
    APPEND 
    INTO TABLE load1
    FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "”"
    (x,y,z,t)
    
  3. SqlLoaderTest.java:

    public class SqlLoaderTest
    {
        public static void main(String[] args) {
            try {
                String sqlldrCmd = "sqlldr control=E:\\load_data\\trial.ctl"+
                   "LOG=trial.log "+
                   "DATA=E:\\load_data\\loadCsv.csv USERID=vehere/adi"+
                   "BAD=E:\\load_data\\trial.bad";
                System.out.println("SQLLDR Started ....... ");
                Runtime rt = Runtime.getRuntime();
                Process proc = rt.exec(sqlldrCmd);
                System.out.println("SQLLDR Ended ........  ");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

コンパイルされて正常に実行されますが、データベースにデータは挿入されません。あなたの提案は高く評価されています。事前に感謝します。

4

2 に答える 2

2

恐れ入りますが、正常に実行されません。エラーが何であるかがわかりません。

sqlldrが実行されたが、ファイルをDBにロードできなかった場合、Javaの抜粋は取得されないことに注意してください。代わりに、はゼロ以外のexitValueProcessを返し、プロセスのコンソールに出力が表示される可能性があります。

あなたがする必要があるのはあなたのを取り、InputStreamProcessそれをなんとかして記録することです(例えば、それをコンソールにダンプする)、それであなたはsqlldr出力が何であるかを見ることができます。sqlldrまたは、の出力を文字列内のファイルにリダイレクトしますsqlldrCmd

于 2012-08-07T08:48:14.260 に答える