【问题标题】:Clean design and implementation for data import library数据导入库的清洁设计与实现
【发布时间】:2009-09-22 12:50:26
【问题描述】:

我的任务是开发一个小型库(使用 C# 3.0 和 .NET 3.5)来为应用程序提供数据导入功能。

规格是:

  • 可以从 CSV 文件导入数据 (可能是其他文件格式 未来)
  • CSV 文件可以包含任何 架构和行数,带有 最大文件大小为 10MB。
  • 必须是 可以更改数据类型和 CSV 中每列的列名 文件。
  • 必须可以排除 CSV 文件中的列 进口。
  • 导入数据将 生成与架构匹配的表 在 SQL Server 数据库中创建,然后 使用中的行填充 CSV。

我一直在玩弄一些想法,现在我当前的代码感觉像是被破解了一点。

我目前的实现方式是:

  1. 打开 CSV 并估计架构, 存储在 ImportSchema 类中
  2. 允许修改架构。
  3. 在 SQL 中使用 SMO 创建表 根据架构。
  4. 使用架构创建 System.Data.DataTable 实例 用于数据类型。
  5. 使用CsvReader 读取CSV 数据到数据表中。
  6. 应用列名更改并从 DataTable 中删除不需要的列。
  7. 使用 System.Data.SqlClient.SqlBulkCopy() 将 DataTable 中的行添加到创建的数据库表中。

这对我来说听起来过于复杂,我正面临着一个心理障碍,试图将它整齐地包装在少数可测试/可扩展的对象中。

对于解决这个问题的方法有什么建议/想法,无论是从实现角度还是设计角度?

非常感谢您的任何建议。

【问题讨论】:

  • 您必须使用 CSV 吗?与 XML 集成并使用 XML 模式通常要好得多——这样您就不必猜测模式中定义的类型。
  • 是的,规范的那部分是一成不变的。

标签: c# .net oop


【解决方案1】:

正如之前一些 SO 答案中所建议的,请查看FileHelpers Libraray。这至少对您导入和分析 CSV 文件的任务有帮助。

【讨论】:

  • FileHelpers 库很好,但据我所知,您需要知道数据的格式,以便将其映射到现有对象..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2021-05-07
  • 1970-01-01
相关资源
最近更新 更多