2017-05-18 2 views
0

Je voudrais exécuter une commande de copie cqlsh à partir du code source C#. Je voudrais exécuter un script Python, qui existe sous le chemin que vous avez choisi:exécuter la ligne de commande cassandra à partir de C#

C:\Program Files\DataStax Community\python\python.exe" "C:\Program Files\DataStax Community\apache-cassandra\bin\cqlsh.py 

Cela me donnera cette capture d'écran: enter image description here

Une fois dans cqlsh, je peux alors exécuter la commande « copie emp à emp.csv " L'idée, c'est que je voudrais exécuter tout cela à partir du code C#. Voici ce que j'ai fait:

try 
      { 

Process p = new Process(); // create process (i.e., the python program 
      p.StartInfo.FileName = @"C:\Python27\python.exe"; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.UseShellExecute = false; // make sure we can read the output from stdout 
      p.StartInfo.Arguments = @"C:\Program Files\DataStax Community\apache-cassandra\bin\cqlsh.py" + " " + "-e copy key_space.emp to 'D:/emp.csv'"; // start the python program with two parameters 
      p.Start(); // start the process (the python program) 
      p.WaitForExit(); 

      }catch(Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
       string strError = ex.Message; 
      } 

Il n'y a aucune exception attrapée mais aussi il n'y a rien arrivé en terme de résultat. Toute aide serait appréciée.

Répondre

1

Je suis assez sûr que votre problème est avec cette ligne:

bin\cqlsh.py" + " " + "copy emp to D:/emp.csv"; 

Si vous deviez exécuter ce à partir de la ligne de commande, cqlsh nécessiterait le drapeau -e pour exécuter une commande. Sous Windows, il avait l'air quelque chose comme ça (en supposant un nom de keyspace de « your_keyspace »:

python bin\cqlsh.py -e "copy your_keyspace.emp to d:\emp.csv" 

donc appeler en fait que de votre processus, vous aurait soit pour échapper aux guillemets doubles ou simplement utiliser des guillemets simples:

bin\cqlsh.py" + " " + "-e 'copy your_keyspace.emp to d:\emp.csv'"; 
+0

je l'ai fait comme vous l'avez dit, l'erreur a disparu, mais je n'ai pas eu aucun résultat, s'il vous plaît adise, merci –

+0

s'il vous plaît vérifier la mise à jour, merci –

+0

@MaherHTB Eh bien, vous êtes sous Windows, alors peut-être vous devrez peut-être tourner la barre oblique dans l'emplacement du fichier? ex: 'd: \ emp.csv' vs.' d:/emp.csv'. – Aaron