通过cmd命令行的方式导出dmp文件,同时获取导出过程中的执行信息,直接采用常规的process方法无法实现,需要做一些小处理,具体如下:
private void Expdmp(string strCmd)
{
Process proc = new Process();
try
{
//proc.StartInfo.FileName = @"C:\app\Administrator\product\11.2.0\dbhome_1\BIN\exp.exe";
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = true;
//注释代码中的开头/c 和结尾 2>&1 是关键,重定向文件输出
//proc.StartInfo.Arguments = "/c exp user/pwd@ip/orcl file=c:\\test.dmp 2>&1";
proc.StartInfo.Arguments = strCmd;
proc.Start();
AddLog(proc.StandardOutput.ReadLine());
while (!proc.StandardOutput.EndOfStream)
{
AddLog( proc.StandardOutput.ReadLine());
}
proc.WaitForExit();
proc.Close();
}
catch (Exception ex)
{
}
finally
{
}
}