Вставьте команду копирования cqlsh после открытия cqlsh.bat из cmd, используя java - PullRequest
0 голосов
/ 24 октября 2018

Я не могу вставить команду CQLSH -COPY после открытия CQLSH.bat из кода Java на компьютере с Windows.Откроется командная строка, и появится приглашение CQLSH>, но она не принимает команду, отправленную из Outputstream.Я попробовал возможное решение, которое уже обсуждалось. Но оно не работает для меня.ниже код, который я пытаюсь

 try {

           String sysEnvStr = System.getenv("CASSANDRA_HOME");//having path as  C:\Program Files\apache-cassandra-3.11.2

           Process p = Runtime.getRuntime().exec("cmd /k start cqlsh.bat", null, new File(sysEnvStr + "\\bin"));

           BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
           BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
           BufferedWriter output = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

           output.write("COPY mydb.processed_data FROM processed_file.csv");
           output.flush();
           output.close();

           // read the output from the command
           String s = "";

           while ((s = stdInput.readLine()) != null) {
              System.out.println(s);
           }
           while ((s = stdError.readLine()) != null) {
              System.out.println("Std ERROR : " + s);
           }
           int returnCode = p.waitFor();
           System.out.println("Return code = " + returnCode);

        } catch (IOException ex) {
            Logger.getLogger(TempTest.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            Logger.getLogger(TempTest.class.getName()).log(Level.SEVERE, null, ex);
        }
...