1

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 を返します!!!

次のようなコマンドproptを使用して、pg_dump.exeの出力をファイルに出力しようとしました:

C:\Program Files (x86)\pgAdmin III\1.16>pg_dump.exe > d:\log.txt

しかし、やはりlog.txtは空です!!

前もって感謝します。

4

1 に答える 1

2

RedirectStandardOutputRedirectStandardErrorに置き換えます。

私の作業コードは次のとおりです。

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();
    }
}
于 2013-07-11T14:15:50.723 に答える