【发布时间】:2018-08-16 10:29:30
【问题描述】:
我尝试使用这个代码,它适用于 linux 命令行,在 java 下
mysqldump --where="date>='20180201' AND date<='20180228'" -uuser -ppassword --skip-add-drop-table --no-create-info --no-create-db -B mydb --tables table1 -r /root/Documents/DbBackup/table1.sql
为了使其在 java 中工作,我使用以下代码:
public static boolean backupDB(String dbName, String where_filter, String path, String tableName) {
String executeCmd = "mysqldump --where="+where_filter+" -u" + userName + " -p" + password + " --skip-add-drop-table --no-create-info --no-create-db "+" -B " + dbName +" "+tableName+" -r " + path;
System.out.println("backupDB "+executeCmd);
Process runtimeProcess;
try {
runtimeProcess = Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
return true;
} else {
System.out.println("Could not create the backup");
}
} catch (Exception ex) {
}
return false;
}
如果调用在 java 代码中,则相同的命令行指令不起作用。我哪里错了?是否可以将错误日志重定向到文件?
如果我使用 where 子句--where=date='20180206' 它也适用于 java。
【问题讨论】:
-
根据您的最后一个问题,您可以使用
2> output.log作为mysqldump参数将日志重定向到文件。 -
@IldarAkhmetov 它适用于命令行,但不适用于我的 java 代码
-
我假设
System.out.println打印完全相同的命令,对吧? -
@IldarAkhmetov 是的
-
在
+ dbName +" "+tableName+" -r "中tableName参数是否在表名table1之前包含--table参数?或者必须是+ dbName +"--tables" +tableName+" -r "