簡體   English   中英

如何將 mysql 命令傳遞給 ProcessBuilder

[英]How to pass mysql commands to ProcessBuilder

這就是我所擁有的:

List<String> restoreCmds = new ArrayList<>();
restoreCmds.add("mysql");
restoreCmds.add("-h" + host);
restoreCmds.add("-u" + login);
restoreCmds.add("-p" + pass);
restoreCmds.add("-e 'source dump.sql'");
restoreCmds.add(targetDB);

ProcessBuilder pb = new ProcessBuilder(restoreCmds);
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process pr = pb.start();

int exitVal = pr.waitFor()

我收到以下錯誤:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''source dump.sql'' at line 1

您不需要為來源添加報價。

我把這條線改成了following,它對我有用。

restoreCmds.add("-e source dump.sql");

-e 選項用於直接執行指定的命令,如您在手冊中所見:

--execute=statement, -e 語句

執行語句並退出。 禁用 --force 和歷史文件。 默認輸出格式類似於使用 --batch 生成的格式。

您應該使用輸入重定向來使用帶有 sql 的源文件來執行。

警告:此外,您應該指定要操作的數據庫的名稱。

暫無
暫無

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

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