【发布时间】:2012-09-12 08:44:06
【问题描述】:
我知道围绕这个主题还有其他主题,但它们并不像我的需求那么具体(目前我可以找到)。
我有 csv 文件要导入到我管理的 SQL Server 数据库中。它们是人工拼凑而成的,因此可能会出现列过多、数据类型不正确、标题损坏等错误。
我有一个 Web 表单,它可以从用户接收文件到服务器上的目录,然后它将一行作为字符串读取,逐个单元格地解析它,并执行诸如检查正确的单元格计数是否存在之类的事情,然后移动到下一行。
现在开始验证数据类型和范围,我不清楚最佳方法。对数字类型进行手动范围检查之类的操作似乎有点过时了。
有没有更好的方法?几件事;
我有 SQL Server 类型,如“numeric”,但也有 nvarchar。
文件可以小到几千字节,也可以大到一千兆字节。
我需要报告存在错误的每个特定行和列,而不仅仅是第 x 行失败。
我想可能会尝试将单元格值转换/转换为预期类型,捕获异常并将数据拆分为块并生成线程以并行执行检查?
提前致谢。
【问题讨论】:
-
如果您的数据存储是 SQL Server,我觉得您应该使用 SSIS。创建一个 SSIS 包并尝试使用 C# codeproject.com/Articles/28096/… 执行 SSIS 包,这将负责将列映射到特定数据类型。
-
网站是 MVC3 吗?如果是这样,请查看模型/视图模型和数据/验证注释。然后,您可以创建一个新的 ObjectX,从 CSV 行填充并验证它 - 确定该行(整个对象)和属性是否有效,相应地报告并在合适的情况下保存。
-
这只是一个标准的 ASP.Net C# Web 应用程序。我希望在 webapp 本身中保留验证,这样我就不会受到数据库中断和/或维护窗口的阻碍。在 C# 代码中有更好的方法吗?
标签: c# sql-server validation parsing csv