我正在开发一个应用程序,用C#从我的postgreSQL数据库中获取备份。 我,使用下面的代码执行并从pg_dump.exe中获取。
ProcessStartInfo startinfo = new ProcessStartInfo
{
FileName = "\"C:\\Program Files (x86)\\pgAdmin III\\1.16\\pg_dump.exe\"",
Arguments = "--host XXX.XXX.XXX.XXX --port 5432 --username \"USERNAME\" --no-password --format plain --verbose --file \"D:\\MYBACKUP.backup\" \"MYDBNAME\"",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
};
Process proc = new Process();
proc.StartInfo = startinfo;
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
var r = proc.StandardOutput.ReadLine();
}
proc.WaitForExit();
Console.WriteLine(proc.ExitCode);
Console.ReadLine();
但是proc.StandardOutput.ReadLine总是返回null !!!
我尝试将pg_dump.exe输出到命令propt的文件中,如下所示:
C:\Program Files (x86)\pgAdmin III\1.16>pg_dump.exe > d:\log.txt
但是log.txt再次为空!!
提前感谢。
答案 0 :(得分:2)
将 RedirectStandardOutput 替换为 RedirectStandardError 。
我的工作代码是:
ProcessStartInfo startinfo = new ProcessStartInfo
{
FileName = "Path to pg_dump.exe",
Arguments = "Arguments",
UseShellExecute = false,
RedirectStandardError = true,
CreateNoWindow = true
};
using (Process process = Process.Start(startinfo))
{
using (StreamReader reader = process.StandardError)
{
StreamWriter sw = new StreamWriter(@"C:\log.txt");
sw.WriteLine(reader.ReadToEnd());
sw.Close();
}
}