从C#执行cassandra命令行

时间:2017-05-18 16:13:40

标签: c# python cassandra cqlsh

我想从c#源代码执行cqlsh copy命令。我想执行一个Python脚本,它存在于以下路径中:

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

这会给我这个截图: enter image description here

一旦进入cqlsh,我就可以运行命令"将emp复制到emp.csv" 我的想法是,我想从c#代码执行所有这些。这是我做的:

 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;
            } 

没有异常被捕,但结果也没有发生。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我很确定你的问题出在这一行:

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

如果要从命令行运行此命令,cqlsh将需要-e标志来执行命令。在Windows中,它看起来像这样(假设键空间名称为“your_keyspace”:

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

所以要从你的进程中实际调用它,你要么必须转义双引号,要么只使用单引号:

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