与RDS的连接工作正常,但无法运行MySQL命令

时间:2017-08-22 15:15:29

标签: java mysql amazon-ec2 command-line

我试图将一个充满表格的SQL文件导入MySQL。

我在Java中使用以下命令导入整个文件,并且它在我的机器上本地工作,但是我遇到了使这段代码在Amazon的ec2上运行的问题:

try 
{
    restoreCmd = new String[]{"mysql ","--user="+doc.getDatabaseUserName(), "--password="+doc.getDatabasePass(),"--host="+doc.getDatabaseHostUri(),"-e","source " + file.getAbsolutePath()};

    try {
        Runtime.getRuntime().exec(restoreCmd);
        System.out.println("Inserted into RDS");
    } 
    catch (Exception ex) 
    {
         ex.printStackTrace();
    }

有人能给我一个烘焙代码的例子,它可以用JDBC做类似的工作,读取SQL文件并导入它吗?

修改 我已经更新了代码以等待运行时进程并检查退出值。它返回1,这是一个失败,但命令仍在本地工作。很奇怪,我不确定是什么原因导致退出值为1,如果它在本地插入工作。

更新代码

String[] restoreCmd;
        try 
        {

            restoreCmd = new String[]{"mysql ","--user="+doc.getDatabaseUserName(), "--password="+doc.getDatabasePass(),"--host="+doc.getDatabaseHostUri(),"-e","source " + file.getAbsolutePath()};

            try {
                Process p = Runtime.getRuntime().exec(restoreCmd);
                int processComplete = p.waitFor();
                if(processComplete == 0){

                    System.out.println("Backup taken successfully");
                    System.out.println("Inserted into RDS");

                } 
                else 
                {
                    System.out.println("Could not take mysql backup");
                }
                } 
            catch (Exception ex) 
            {
                ex.printStackTrace();
            }

0 个答案:

没有答案