Tag: filehelpers

FileHelpers库可以编写包含可空字段的类以及读取它们吗?

我正在使用FileHelpers库的2.0版本,该库被记录为能够处理.NET 2.0 Nullable类型。 我正在使用文档中示例中给出的代码: [DelimitedRecord(“|”)] public class Orders { public int OrderID; public DateTime? OrderDate; [FieldConverter(ConverterKind.Date, “ddMMyyyy”)] public DateTime? RequiredDate; public int? ShipVia; } 使用FileHelperEngine,我可以成功读入一个对OrderDate,RequiredDate或ShipVia字段没有任何价值的文件。 该文件看起来像: 1 ||| 但是,我无法将生成的Orders []写出到文件中 – 库会抛出NullReferenceException,堆栈跟踪如下: FileHelpers.Field上的FileHelpers.FieldBield.CreateFieldString(StringBuilder sb,Object fieldValue)中的FileHelpers.FieldBase.BieldFieldString(Object fieldValue)中的FileHelpers.ConvertHelpers.CultureConverter.FieldToString(Object from)位于FileHelpers.FieldBase.AssignToString(StringBuilder sb,Object fieldValue)位于FileHelpers.FileHelperEngine的.RecordInfo.RecordToString(对象记录) 1.WriteStream(TextWriter writer, IEnumerable 1条记录,Int32 maxRecords)位于FileHelpers.FileHelperEngine 1.WriteFile(String fileName, IEnumerable 1条记录,Int32 maxRecords)位于FileHelpers.FileHelperEngine 1.WriteFile(String fileName, IEnumerable 1条记录)位于C:\ dev \ […]

如何使用FileHelpers库将大型SQL Server表导出为CSV文件?

我想使用C#和FileHelpers库将大型SQL Server表导出为CSV文件。 我也可以考虑C#和bcp,但我认为FileHelpers比bcp更灵活。 速度不是特殊要求。 运行以下代码时,在storage.ExtractRecords()上抛出OutOfMemoryException storage.ExtractRecords()省略了一些不太重要的代码): SqlServerStorage storage = new SqlServerStorage(typeof(Order)); storage.ServerName = “SqlServer”; storage.DatabaseName = “SqlDataBase”; storage.SelectSql = “select * from Orders”; storage.FillRecordCallback = new FillRecordHandler(FillRecordOrder); Order[] output = null; output = storage.ExtractRecords() as Order[]; 运行以下代码时, link.ExtractToFile()上会抛出“Timeout expired”: SqlServerStorage storage = new SqlServerStorage(typeof(Order)); string sqlConnectionString = “Server=SqlServer;Database=SqlDataBase;Trusted_Connection=True”; storage.ConnectionString = sqlConnectionString; storage.SelectSql = “select * […]

FileHelpers嵌套引号和逗号 – 解析错误

我正在尝试使用奇妙的FileHelpers库从地狱解析CSV文件。 它无法处理表格的一行: “TOYS R”” US”,” INC.”””,fld2,fld3,””,””,””,fld7, FileHelper非常擅长处理“千种”格式的数字字段(使用自定义格式化程序),即使用引号,尾随逗号等包装,但它会导致第一个字段出现问题。 “TOYS R”” US”,” INC.”””,fld2,… 该字段包括嵌套引号和嵌套逗号。 FileHelper不知道如何处理它并将其拆分为两个单独的字段,这随后会导致抛出exception。 有没有推荐的方法来处理这个?

如何获取字段的自定义属性值?

我正在使用FileHelpers写出固定长度的文件。 public class MyFileLayout { [FieldFixedLength(2)] private string prefix; [FieldFixedLength(12)] private string customerName; public string CustomerName { set { this.customerName= value; **Here I require to get the customerName’s FieldFixedLength attribute value** } } } 如上所示,我想访问属性的set方法中的自定义属性值。 我该如何实现这一目标?

有没有办法使用FileHelpers库进行字段顺序?

我从nuget下载了FileHelpers,但我不确定这个function是否不存在,或者我没有正确的版本或什么。 我一直在环顾四周 ,似乎FileHelpers可能有一个属性来指定字段顺序。 我下载了这个,但是当我在寻找nuget时,似乎还有另一个版本

让FileHelpers 2.0处理带有多余逗号的CSV文件

我目前正在使用FileHelpers库(v2.0.0.0)来解析CSV文件。 CSV文件映射到具有少量公共属性的类,假设有N个 。 问题是,默认情况下,FileHelpers似乎无法正确处理用户指定具有多于N-1个逗号的CSV文件的情况。 其余的逗号只会附加到最后一个属性值。 我认为这必须可以通过FileHelpers的属性进行配置,但我没有看到任何会忽略记录中没有匹配属性的字段。 我查看了RecordCondition ,但使用像ExcludeIfEnds(“,”)这样的东西看起来会完全跳过这行,如果它以逗号结尾,但我只是希望它们被剥离。 有可能我唯一的办法是预处理文件并删除任何尾随的逗号, 这完全没问题 ,但我想知道FileHelpers是否也可以这样做,也许我只是在文档中没有看到它。

解析大型csv文件时,FileHelpers会抛出OutOfMemoryException

我正在尝试使用FileHelpers( http://www.filehelpers.net/ )解析一个非常大的csv文件。 该文件为1GB压缩文件,解压缩约20GB。 string fileName = @”c:\myfile.csv.gz”; using (var fileStream = File.OpenRead(fileName)) { using (GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Decompress, false)) { using (TextReader textReader = new StreamReader(gzipStream)) { var engine = new FileHelperEngine(); CSVItem[] items = engine.ReadStream(textReader); } } } FileHelpers然后抛出OutOfMemoryException。 测试失败:抛出了类型’System.OutOfMemoryException’的exception。 System.OutOfMemoryException:抛出了类型’System.OutOfMemoryException’的exception。 位于System.Text.StringBuilder.Append(Char值)的System.Text.StringBuilder.ExpandByABlock(Int32 minBlockCharCount)位于FileHelpers.StringHelper.ExtractQuotedString的System.Text.StringBuilder.Append(Char值)(LineInfo line,Char在FileHelpers.FileHelperEngine的FileHelpers.RecordInfo.StringToRecord(LineInfo行)的FileHelpers.FieldBase.ExtractValue(LineInfo行)的FileHelpers.DelimitedField.ExtractFieldString(LineInfo行)处的quoteChar,Boolean allowMultiline) 1.ReadStream(TextReader reader, Int32 maxRecords, DataTable dt) […]