gpt4 book ai didi

c# - 进程不适用于 Ubuntu 但适用于 Windows

转载 作者:行者123 更新时间:2023-11-30 16:39:53 25 4
gpt4 key购买 nike

我有这段代码可以通过 Windows 和 Linux 的命令行运行 csv 导入:

var isLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
ProcessStartInfo startInfo = null;

if (isLinux)
{
startInfo = new ProcessStartInfo
{
FileName = @"/bin/bash",
Arguments = $"-c 'cat \"{filePath}\" | psql -h 127.0.0.1 -U {user} -d {dbname} -w -c \"copy data_temp from stdin csv header\"' ",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
};

}
else
{
startInfo = new ProcessStartInfo
{
FileName = @"cmd.exe",
Arguments = $"/c cat \"{filePath}\" | psql -h 127.0.0.1 -U {user} -d {dbname} -w -c \"copy data_temp from stdin csv header\" ",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
};
}

using (var process = new Process { StartInfo = startInfo})
{
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
}

它在 Windows 上运行良好,但在 Linux (Ubuntu 18.04) 上,result 始终为空,导入无效。

我尝试在终端中自己编写查询:

 /bin/bash -c 'cat "/path/file.csv" | psql -h 127.0.0.1 -U user -d user -w -c "copy data_temp from stdin csv header"'

它工作正常,但是当从我的代码运行时它只返回空字符串并且不导入。

我在这里做错了什么?

编辑:我想到这可能是权限问题。这段代码在我的 asp.net 核心 Web 应用程序中,因此我认为它将作为用户 www-data 运行。 www-data 设置为 nologin,因此这可能会导致问题。不确定解决方案

最佳答案

问题是单引号不起作用。我改为双引号,它起作用了。

关于c# - 进程不适用于 Ubuntu 但适用于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52376985/

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