2016-04-28 109 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代碼調用。