Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java运行mysql命令_Java_Mysql - Fatal编程技术网

从java运行mysql命令

从java运行mysql命令,java,mysql,Java,Mysql,我正在尝试运行以下命令: C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -u root -padmin < C:\script.sql > C:\redir.txt 其中command是包含mysql命令的字符串。如果我使用cmd中的命令,它工作得很好,但是如果我运行java行,它就不会用查询结果创建redir.txt。我不明白为什么它不工作(顺便说一句,它不会抛出任何异常或任何类型的错误消息)。各种问题,从这里开始: <

我正在尝试运行以下命令:

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql" -u root -padmin < C:\script.sql > C:\redir.txt

其中command是包含mysql命令的字符串。如果我使用cmd中的命令,它工作得很好,但是如果我运行java行,它就不会用查询结果创建redir.txt。我不明白为什么它不工作(顺便说一句,它不会抛出任何异常或任何类型的错误消息)。

各种问题,从这里开始:

< C:\script.sql 
这些“重定向”在您从Java发送的命令中根本不起作用。含义:那些“”由cmd.shell处理

可能会创建一个类似

cmd.exe .... 
与那些管道一起工作的;但我不确定。什么绝对有效:

  • 使用流程生成器并获取子流程的标准输入;及其stdout/stderr输出流
  • 编写Java代码,将script.sql的内容写入stdin流,从stdout流中读取,例如将其推入redir.txt输出文件

最后:您必须将命令中字符串文本中的单个
\
转义为
\

将命令放入批处理文件/bash脚本中(取决于您的环境),并使用
exec()
调用该脚本。Java的exec()有很多问题,特别是在涉及命令行参数的情况下,因此这通常是解决这些问题的最佳方法。

exec()有很多特性,这使得它的使用非常不简单。这是一篇非常有用的文章:。然而,我也会发布你的代码。为什么?它作为服务运行。它被设计为作为服务运行。创建另一种启动方式的意义到底是什么?
> C:\redir.txt
cmd.exe ....