代码之家  ›  专栏  ›  技术社区  ›  TonE

从字节为[]的CSV文件创建强类型数据表

  •  2
  • TonE  · 技术社区  · 15 年前

    我正在使用C#3和.NET 3.5进行开发,并且有一个对象,其中CSV文件(未知格式)的内容保存在byte[]属性中。我需要解析这个字节[],并创建一个包含列和行的System.DataTable。

    我目前正在使用 CsvReader 解析字节[]CSV,因为这可以很好地处理流,而且速度非常快。不幸的是,这只是将所有数据视为字符串。

    我曾尝试使用Jet/OLEDB从CSV文件中读取数据,这成功地创建了一个包含不同数据类型列的数据表-但是,由于这需要使用连接字符串,我假设它不能用于解析内存中的字节[]。

    是否有一种方法可以做到这一点,如果没有,那么什么是推断数据类型并将非类型化的数据表转换为具有特定列数据类型的数据表的合理方法?

    2 回复  |  直到 15 年前
        1
  •  2
  •   yu_sha    15 年前

    1) 用CsvReader读取前N行并推断数据类型(如果所有N行看起来都像整数,则字段为整数,等等)

    3) 重新开始阅读并填写。

        2
  •  0
  •   rohancragg    15 年前

    CsvToDataTable ReadStreamAsDT ,首先需要将字节数组放入文本阅读器 via a chain of streams

    或者,DIY方法:

    见: DataReader Constructor

    然后我猜你可以把它输入一个DataAdapter,这个DataAdapter可以输出一个数据集,从中你可以得到一个DataTable。。。

    编辑

    我现在意识到,您可能已经考虑过使用ADO.Net的各种组件,因为您提到了Jet/ODBC。

    我在考虑IDbDataReader接口,但是,当然,您需要一个特定的具体实现,除了Biztalk中的这个接口(您可能没有访问权限)之外,可能没有其他的实现能够满足您的需求。