2016-04-28 107 views
0

我试图以编程方式将一个.sql文件导入到MySQL中。 .sql文件由mysqldump生成。我试图在Java程序中动态执行此操作。但是,它仍然在Java中的“<”字符上失败(我认为)。如果我在它将要运行的命令(下面的“组合”变量)的调试器中获取字符串,并将其粘贴到命令行中,它可以正常工作。同样,当我试图让mysqldump在这个程序中工作时,它在“>”字符上失败,我不得不用“--result-file =”参数替换它以使其工作。使用Java代码将.sql文件导入到MySQL中

String command = mySqlPath + "mysql.exe"; 
    String user = "-u " + settings.dbUser; 
    String password = "-p" + settings.dbPassword; 
    String db = settings.dbDatabase; 
    String inputFile = filePath + mySqlDumpFile; 

    String combined = command + " " + user + " " + password + " " + db + " < " + inputFile; 

    ExternalCommandExecuter ece = new ExternalCommandExecuter(combined); 
    int code = ece.execute(); 

这导致了这个字符串,例如

C:\software\mysql5\bin\mysql.exe -u root -p<password> 
db_name < C:\software\tomcat7\webapps\ROOT\WEB-INF\documents\dump-1461789460425.sql 

这将导致在1粘贴到命令行的退出码,它会工作。

+1

但是为什么会遇到所有这些问题 – e4c5

+0

因为会有几十个转储,并且该软件使客户能够使用webapp在不同时间跳转到不同的时间点。 – bluedevil2k

+0

不,我设置的方式更好,因为sql转储文件将通过电子邮件发送并在本地使用。 – bluedevil2k

回答

0

所以我不能通过导入带有“<”文件的Java工作,而是必须编写一个外部.sh/.bat文件,我从我的Java代码调用。