You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中执行sqlite3内嵌命令实现SQL查询结果导出为CSV文件

错误原因

你代码中的>是命令行解释器(cmd)的重定向语法,不属于sqlite3.exe本身的合法参数。当你直接启动sqlite3进程并把带>的字符串作为参数传入时,sqlite3会把>也当成SQL语句的一部分解析,自然就抛出语法错误。


解决方案

方案1:直接用代码写入输出内容(更推荐)

你已经开启了RedirectStandardOutput = true,进程返回的标准输出就是你需要的CSV内容,直接把拿到的输出写入data.csv文件即可,不需要依赖cmd的重定向符号:

string sqlLite3ExePath = "sqlite3";
// 去掉末尾的重定向部分即可
string arguments = "-header -csv local-DataBase.sqlite \"select * from customers;\"";

using (Process pProcess = new Process())
{
    pProcess.StartInfo.FileName = sqlLite3ExePath;
    pProcess.StartInfo.Arguments = arguments;
    pProcess.StartInfo.UseShellExecute = false;
    pProcess.StartInfo.RedirectStandardOutput = true;
    pProcess.StartInfo.CreateNoWindow = true;
    pProcess.Start();
    string output = pProcess.StandardOutput.ReadToEnd(); 
    pProcess.WaitForExit();
    // 直接将输出内容写入文件
    File.WriteAllText("data.csv", output, Encoding.UTF8);
    Debug.WriteLine(output);
}

方案2:调用cmd执行完整命令

如果要保留重定向语法,可以启动cmd.exe作为进程载体,让cmd来处理重定向逻辑:

using (Process pProcess = new Process())
{
    pProcess.StartInfo.FileName = "cmd.exe";
    // /c参数表示执行完指定命令后自动关闭cmd进程
    pProcess.StartInfo.Arguments = "/c sqlite3 -header -csv local-DataBase.sqlite \"select * from customers;\" > data.csv";
    pProcess.StartInfo.UseShellExecute = false;
    pProcess.StartInfo.CreateNoWindow = true;
    pProcess.Start();
    pProcess.WaitForExit();
}

内容的提问来源于stack exchange,提问作者Sayansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:36:01