使用 CSVHelper 解析内容中带有引号的管道分隔文件

Using CSVHelper to parse a pipe deliminated file with quotes in the content

我有一个外部生成的管道分隔文件,我试图使用 .NET CSVHelper 对其进行解析并输入 SQL 数据库,但我发现了一个问题。主要问题是内容中有引号,但分隔符是竖线,引号没有转义。

假设这是文件

ID|Price|Description|stock

133|55.89|Standard Electric Drill|23

134|3.40|3.5" Drill Bit|56

我已将分隔符设置为管道,但当它到达描述中带有引号的记录(在本例中为 ID 134,引号“表示英寸”)时出错。该错误建议将 BadDataFound 设置为 Null,但会忽略记录吗?

是否有我遗漏的允许此操作的配置?或者最好的方法是简单地用 {quote} 或其他东西替换引号,解析它然后在将其输入数据库之前替换回去?

只要没有字段包含管道符或换行符,NoEscape 模式就应该有效。

void Main()
{
    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        Mode = CsvMode.NoEscape,
        Delimiter = "|"
    };
    
    using (var reader = new StringReader("ID|Price|Description|stock\n133|55.89|Standard Electric Drill|23\n134|3.40|3.5\" Drill Bit|56"))
    using (var csv = new CsvReader(reader, config))
    {
        var records = csv.GetRecords<Foo>().Dump();
    }
}

public class Foo
{
    public int ID { get; set; }
    public string Price { get; set; }
    public string Description { get; set; }
    public int stock { get; set; }
}