Reza
Reza

Reputation: 21

can not get out put from pg_dump.exe command line

i'm developing an application to get backup from my postgreSQL database with C#. i,m using code below to execute and get out put from 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();

but proc.StandardOutput.ReadLine always returns null!!!

i try to put pg_dump.exe output to a file with command propt like this:

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

but again log.txt is empty!!

thanks in advance.

Upvotes: 2

Views: 1752

Answers (1)

ki11en
ki11en

Reputation: 667

Replace RedirectStandardOutput with RedirectStandardError.

My working code is:

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

Upvotes: 3

Related Questions