我用ProcessBuilder写了一个java程序来启动CMD提示符
public class OracleConnect {
public static void main(String[] args) throws IOException {
String[] cmd = new String[] { "sqlplus", "<USER>/<PASSWORD>@<INSTANCE>" };
ProcessBuilder builder = new ProcessBuilder(cmd);
Process process = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
new ReadFromConsole(br).start();
new WriteToConsole(bw).start();
}
}
class AbsThread extends Thread {
boolean read = true;
boolean write = false;
}
class ReadFromConsole extends AbsThread {
BufferedReader processOut;
public ReadFromConsole(BufferedReader processOut) {
this.processOut = processOut;
}
@Override
public void run() {
while (read) {
int i = -1;
try {
while ((i = processOut.read()) != -1) {
char ch = (char) i;
System.out.print(ch);
}
} catch (IOException e) {
e.printStackTrace();
}
write = true;
read = false;
}
}
}
class WriteToConsole extends AbsThread {
BufferedWriter processIn;
public WriteToConsole(BufferedWriter processIn) {
this.processIn = processIn;
}
@Override
public void run() {
while (write) {
System.out.print("Enter command ");
String cmd = new Scanner(System.in).nextLine();
try {
processIn.write(cmd);
processIn.flush();
} catch (IOException e) {
e.printStackTrace();
}
read = true;
write = false;
}
}
}
控制台中的输出:
SQL*Plus:2015年1月19日星期一14:07:53发布11.2.0.3.0
版权所有(c)1982、2011,Oracle。保留所有权利。
连接到:Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产,包括分区、Oracle标签安全、OLAP、数据挖掘和实际应用程序测试选项
SQL
该程序挂在读取BLINK_CHARACTER,我尝试了read()和readLine()它不读取BLINK_CHARACTER。
如果我执行手动,则在CMD提示符中得到以下响应
C:
SQL*补充:发布11.2.0.3.0生产周一一月19 12:29:44 2015
版权所有(c)1982、2011,Oracle。保留所有权利。
连接到:Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产,包括分区、Oracle标签安全、OLAP、数据挖掘和实际应用程序测试选项
SQL
如何在运行时通过提供用户名和密码使其具有交互性?我还需要为Informatica流程实现同样的交互式CMD提示符。
PS:有登录选项
如果您从连接字符串中删除用户名/密码和@
字符,SQL*Plus将提示输入用户名/密码:
sqlplus <INSTANCE>
SQL*Plus:11.2.0.0.0版-2015年1月19日星期一14:07:53生产(c)版权所有1982,2008 Oracle Corporation。保留所有权利
输入用户名:
我想从cmd执行一个基于spring的jar文件。 这是我的pom。xml: 我在intelliJ中创建了一个jar文件,它运行正常,但当我这样做时:java-jar fileserver-1.0-SNAPSHOT. jar 我得到:异常在线程"主"java.lang.NoClassDefFoundError: org/springFramework/引导/SpringApplication 编辑
我有一个服务器在命令窗口中运行,我希望一些代码集中到窗口中,然后输入一些东西,每2 1/2小时到3小时随机重复一次。 基本上是这样简单的: Focus CMD提示符(已打开,不想打开新的)
问题内容: 如何使用MySQLdb python驱动程序执行* .sql文件中存储的sql脚本。我在尝试 但这不起作用,因为 cursor.execute 一次只能运行一个sql命令。我的sql脚本改为包含多个sql语句。我也在尝试 但也没有成功。 问题答案: 假设文件中每行有一条SQL语句。否则,您将需要编写一些规则以将行连接在一起。
我有一个情况需要处理,我有我的liquibase按照推荐的最佳实践进行结构化。更改日志xml的结构如下所示 在我们的应用程序组中,我们运行updateSQL来生成统一的sql文件,并通过我们的DBA组执行更改。 如何在Liquibase ChangeLog中包含这些常见的重复语句。
我想编写一个批处理文件,该文件将按给定顺序执行以下操作: 打开命令 注意:执行命令后不应关闭cmd窗口。 我试过启动命令。exe/k“cd\