如何在SSIS导出逗号分隔文件时为文本字段添加管道符|限定符
修改方案
核心修改逻辑
你需要调整脚本中写入单元格内容的逻辑,对文本类型字段/含分隔符的字段自动包裹管道符|作为限定符,修改位置为原代码中写入行数据的循环块,也可以按需同步修改表头写入逻辑。
修改后的核心代码段
// Write All Rows to the File foreach (DataRow dr in d_table.Rows) { for (int ir = 0; ir < ColumnCount; ir++) { if (!Convert.IsDBNull(dr[ir])) { string cellValue = dr[ir].ToString(); Type columnType = d_table.Columns[ir].DataType; // 文本类型字段、或值包含分隔符的字段用管道符包裹 if (columnType == typeof(string) || cellValue.Contains(FileDelimiter)) { // 可选:如果内容本身存在管道符,可先做转义,取消下行注释即可 // cellValue = cellValue.Replace("|", "\\|"); sw.Write($"|{cellValue}|"); } else { sw.Write(cellValue); } } if (ir < ColumnCount - 1) { sw.Write(FileDelimiter); } } sw.Write(sw.NewLine); }
可选调整说明
- 如果要求所有字段(包括数字、日期等类型)都统一包裹管道符,直接去掉类型判断和分隔符判断逻辑,所有值输出时统一套
|即可:sw.Write($"|{cellValue}|"); - 如果表头也可能包含分隔符,可对表头写入循环做相同的包裹处理即可。
内容的提问来源于stack exchange,提问作者Truecolor
相关产品推荐
相关产品推荐

