C#中如何向CSV文件写入含逗号的SQL语句
解决方案
你的核心问题是CSV会把SQL语句中的逗号识别为列分隔符,导致内容被拆分到不同列。你之前的错误在于修改了SQL本身的语法(把逗号换成","),反而破坏了Insert语句的格式。
正确的做法是遵循CSV的规范:当字段内容包含逗号时,用双引号将整个字段包裹,这样CSV阅读器就会把整个SQL语句识别为单个列,不会拆分内部的逗号。
修正后的代码
string query = "Insert into table(userId,companyID) values(" + userId + "," + SplitedLine[1] + ")"; // 用双引号包裹整个SQL语句,避免CSV拆分内部逗号 string csvContent = "\"" + query + "\""; writer.WriteLine(csvContent);
或者使用C#的字符串插值(更简洁):
string query = $"Insert into table(userId,companyID) values({userId},{SplitedLine[1]})"; string csvContent = $"\"{query}\""; writer.WriteLine(csvContent);
额外说明
如果userId或SplitedLine[1]是字符串类型,SQL语句本身需要用单引号包裹值(否则会引发SQL语法错误),此时完整代码应该是:
string query = $"Insert into table(userId,companyID) values('{userId}','{SplitedLine[1]}')"; string csvContent = $"\"{query}\""; writer.WriteLine(csvContent);
这样生成的CSV内容会是类似:
"Insert into table(userId,companyID) values('1001','COMP001')"
CSV阅读器会将其识别为单个列,同时SQL语句的语法也完全正确。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

