我想从c#源代码执行cqlsh copy命令。我想执行一个Python脚本,它存在于以下路径中:
C:\Program Files\DataStax Community\python\python.exe" "C:\Program Files\DataStax Community\apache-cassandra\bin\cqlsh.py
一旦进入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;
}
没有异常被捕,但结果也没有发生。 任何帮助将不胜感激。
答案 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'";