gpt4 book ai didi

java - 在 Linux 机器上以 Java 代码运行 .sh 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:06 27 4
gpt4 key购买 nike

我的任务: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,'-','')"
)

P.S:我已经阅读了很多关于同一问题的帖子,并尝试了所有解决方案,但都没有奏效。当前的 java 代码示例取自另一个 StackOverFlow 线程。

我们将不胜感激任何帮助。

最佳答案

你需要 runtime.getRuntime.exec(new String[]{"/bin/bash", "-c", "/path/to/script.txt"})看这里:How to execute command with parameters?

关于java - 在 Linux 机器上以 Java 代码运行 .sh 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40657174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com