【问题标题】:can not get out put from pg_dump.exe command line无法从 pg_dump.exe 命令行输出
【发布时间】:2013-05-16 12:04:40
【问题描述】:

我正在开发一个应用程序来使用 C# 从我的 postgreSQL 数据库中获取备份。 i,m 使用下面的代码执行并从 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 又是空的!!

提前致谢。

【问题讨论】:

    标签: c# output pg-dump


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多