所以我尝试从java(jdk v1.8)备份mongodb(v3.2),到目前为止,我发现mongo java驱动程序没有为备份数据库提供任何类。在追逐野鹅之后,最好的解决办法是 - 从Runtime
这是代码
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = new Date();
String timeAndDate = dateFormat.format(date);
File file = new File("backups/"+timeAndDate);
file.mkdirs();
Runtime.getRuntime().exec("mongoexport --db cookbook --collection foos --out /backups/"+ timeAndDate + "/foos.json;");
Runtime.getRuntime().exec("mongoexport --db cookbook --collection bars --out /backups/"+ timeAndDate + "/bars.json;"); // ignores perhaps
但问题是它不会创建.json文件。哪里错了。感谢您的建议和解答!
答案 0 :(得分:1)
我看到你犯了几个错误。但是,让我首先发布作为工作代码,然后我将解释你的代码有什么问题。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
Date date = new Date();
String timeAndDate = dateFormat.format(date);
File file = new File("backups/"+timeAndDate);
file.mkdirs();
try {
String command = "mongoexport --db cookbook --collection foo --out \"backups/"+ timeAndDate + "/foos.json\"";
Process p = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while(reader.ready())
{
System.out.println(reader.readLine());
}
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
问题#1
DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH-mm-ss”);
由于某种原因,mongoexport的日期格式字符串有问题。正如您所看到的,dd HH之间存在空间。如果保持这种格式。你会得到以下错误。
error parsing command line options: invalid argument for flag `-o, --out' (expected string): invalid syntax
try 'mongoexport --help' for more information
问题#2
文件文件=新文件(“backups /”+ timeAndDate); 在这里你的路径中有一个正斜杠 foos --- out / backups /“,它指向根文件夹,但在你创建保存备份的文件夹时却没有。