gpt4 book ai didi

c# - 如何将输入数据发送到 Postgres psql.exe?

转载 作者:行者123 更新时间:2023-11-29 14:06:37 25 4
gpt4 key购买 nike

我想将用户 MyUser 的密码提供给 psql.exe。不幸的是,我所有的尝试都失败了。请看下面的代码:

        var psi = new ProcessStartInfo(@"c:\Program Files\PostgreSQL\9.5\bin\psql.exe", "-w -t -h localhost -p 5432 -U MyUser -c \"SHOW data_directory\"")
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardInput = true,
RedirectStandardError = true,
CreateNoWindow = true

};

using (var process = new Process { StartInfo = psi })
{
process.OutputDataReceived += (sender, e) =>
{
Console.WriteLine($"Output: {e.Data}");
};
process.ErrorDataReceived += (sender, e) =>
{
Console.WriteLine($"Error: {e.Data}");
};

process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.StandardInput.WriteLine("Password");
process.StandardInput.Flush();


process.WaitForExit();
Console.WriteLine($"Exit code: {process.ExitCode}");
}

psql.exe 从不从重定向的标准输入中读取密码。因此进程卡在 WaitForExit 上。如果我使用 CreateNoWindow=false,那么我可以将密码写入控制台窗口并在 OutputDataReceived、ErrorDataReceived 中接收答案,但这不是我需要的。我需要在没有用户交互的情况下运行 psql.exe。请注意,密码不应存储在 pgpass.conf 中。

最佳答案

试一试:

proc.StartInfo.EnvironmentVariables["PGPASSWORD"] = "mypass";

它对我有用。

关于c# - 如何将输入数据发送到 Postgres psql.exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com