【发布时间】:2009-09-22 12:50:26
【问题描述】:
我的任务是开发一个小型库(使用 C# 3.0 和 .NET 3.5)来为应用程序提供数据导入功能。
规格是:
- 可以从 CSV 文件导入数据 (可能是其他文件格式 未来)
- CSV 文件可以包含任何 架构和行数,带有 最大文件大小为 10MB。
- 必须是 可以更改数据类型和 CSV 中每列的列名 文件。
- 必须可以排除 CSV 文件中的列 进口。
- 导入数据将 生成与架构匹配的表 在 SQL Server 数据库中创建,然后 使用中的行填充 CSV。
我一直在玩弄一些想法,现在我当前的代码感觉像是被破解了一点。
我目前的实现方式是:
- 打开 CSV 并估计架构, 存储在 ImportSchema 类中
- 允许修改架构。
- 在 SQL 中使用 SMO 创建表 根据架构。
- 使用架构创建 System.Data.DataTable 实例 用于数据类型。
- 使用CsvReader 读取CSV 数据到数据表中。
- 应用列名更改并从 DataTable 中删除不需要的列。
- 使用 System.Data.SqlClient.SqlBulkCopy() 将 DataTable 中的行添加到创建的数据库表中。
这对我来说听起来过于复杂,我正面临着一个心理障碍,试图将它整齐地包装在少数可测试/可扩展的对象中。
对于解决这个问题的方法有什么建议/想法,无论是从实现角度还是设计角度?
非常感谢您的任何建议。
【问题讨论】:
-
您必须使用 CSV 吗?与 XML 集成并使用 XML 模式通常要好得多——这样您就不必猜测模式中定义的类型。
-
是的,规范的那部分是一成不变的。