mongodb-java-driver 3.2不能用运行时mongoexport

时间:2016-03-01 21:03:58

标签: java mongodb

所以我尝试从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文件。哪里错了。感谢您的建议和解答!

1 个答案:

答案 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 /“,它指向根文件夹,但在你创建保存备份的文件夹时却没有。