当前位置: 首页 > 知识库问答 >
问题:

如何命令mysql转储从Java

隆飞宇
2023-03-14

当我使用Windowscmd.exe时,该命令可以完美运行,但不适用于我的Java应用程序。

String[] command = new String[]{db.getMysqlpath()+"\\mysqldump", "-u"+BuilderSession.getDbPropertice().get("username"), "-p"+BuilderSession.getDbPropertice().get("password"), s ,"|","mysql", "-u"+BuilderSession.getDbPropertice().get("username"), "-p"+BuilderSession.getDbPropertice().get("password"),  dbname };
    ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList(command));
    processBuilder.redirectError(Redirect.INHERIT);        
    Process process = processBuilder.start();
    process.waitFor(); 

例如,逗号是:C:\Program Files(x86)\MySQL\MySQL Server 5.0\bin\mysqldump-uroot-p123 stroe|mysql-uroot-p123store_1401我得到了以下错误:

mysqldump: Couldn't find table: "|"

你有什么想法吗?

共有1个答案

澹台啸
2023-03-14

您尝试调用几个用管道连接在一起的命令。ProcessBuilder不支持这一点。它只支持调用单个命令。

它从命令行工作的原因是,命令解释器支持调用与管道绑定在一起的多个命令,方法是使用类似于ProcessBuilder的东西调用每个命令,并将第一个命令的输出与第二个命令的输入绑定在一起。

您可以选择1)通过调用两个ProcessBuilder并将其连接在一起来执行相同的操作,或者2)在命令行上调用命令行解释器。

 类似资料:
  • 问题内容: 我离开Linode是因为我没有必要的Linux sysadmin技能。在完成向更加友好的服务过渡之前,我需要下载MySQL数据库的内容。有什么办法可以从命令行执行此操作? 问题答案: 您可以使用mysqldump命令行功能完成此操作。 例如: 如果是整个数据库,则: 如果是所有DB,那么: 如果是数据库中的特定表,则: 您甚至可以使用gzip来自动压缩输出(如果您的数据库很大): 如果

  • 我正在远离Linode,因为我没有必要的Linux系统管理员技能;在我完成到一个更友好的noob服务的转换之前,我需要下载一个MySQL数据库的内容。有没有一种方法可以让我从命令行完成这件事?

  • 文件夹结构是正确的--也就是说,我有一个与node_modules/karma/bin匹配的嵌套文件夹结构,并且我在那个位置有一个名为karma的文件。 我在两个例子中都是从同一个位置开始的。在Visual Studio代码终端或windows命令提示符中运行此命令时,会出现以下错误:“'node_modules'未被识别为内部或外部命令、可操作程序或批处理文件。” 但在GitBash,它工作得很

  • 问题内容: 如何通过外壳程序脚本执行SQL命令,以使其自动化? 我想使用外壳程序脚本恢复在SQL文件中收集的数据。我想连接到服务器并还原数据。通过SSH命令行单独执行时,该命令有效。 这是我使用的命令: 这是创建文件并将其通过管道传递到mysql 的Shell脚本代码。 正确的方法是什么? 问题答案: 您需要使用该标志来发送密码。这很棘手,因为您和密码之间必须没有空格。 如果在空格之后使mysql

  • 如何从命令行调用存储过程? 我有个程序:

  • 是否可以使用命令行中的JMX在linux(CentOS)上运行的进程上获取服务器堆转储? 无法打开VisualVM,无法安装jmap