簡體   English   中英

在Linux機器上以Java代碼運行.sh文件

[英]Run .sh File in Java Code on Linux Machine

我的任務: 1-讀取Excel文件,對其進行解析並將數據保存在txt文件中。 2-讀取該txt文件,並將其傳遞給batch.sh文件。 這個batch.sh文件做一件事,它從上述txt文件中選擇數據並將其保存在數據庫表中。

當我從終端運行batch.sh文件(並給它txt文件)時,它工作正常。 它就像我想要的那樣將記錄插入數據庫中。

問題是 ,當我想對Java代碼執行相同操作時, batch.sh文件不起作用。 而且,不會引發異常。

一些解釋:我正在使用Java 7,Oracle,SQL-Loader,Linux。

附加信息:如果我將batch.sh文件重命名為batch.bat文件並在Windows環境中運行它,則可以正常工作。 如果從終端執行,batch.sh文件也可以正常工作。 唯一的問題是,它不適用於Java代碼。

我列出了以下任務的Java代碼段,batch.sh文件和control.txt文件。

Java代碼:

try{
    String target = new String("/path/to/batchFile/batch.sh");
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(target);
    proc.waitFor(); 
}catch(Exception e){
    LOG.error("Exception Occured with Message : "+e.getMessage());
}

Batch.sh:

sqlldr username/password@sid control='/path/to/batchFile/control.txt' log='/path/to/batchFile/Results.log' bad='/path/to/batchFile/BadFile.bad' ERRORS=5000

control.txt:

options  ( skip=1 )
load data
  infile               '/path/to/batchFile/TxtFileData.txt'           
  truncate into table   TABLE_NAME
fields terminated by ","       

  (  
  column_name "replace(:column_name,'-','')"    
  ) 

PS: 我已經閱讀了很多有關同一問題的文章,並嘗試了每種解決方案,但沒有奏效。 Java代碼的當前示例來自另一個StackOverFlow線程。

任何幫助將不勝感激。

您需要runtime.getRuntime.exec(new String[]{"/bin/bash", "-c", "/path/to/script.txt"})請參見此處: 如何執行帶參數的命令?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM