使用schema.ini作为验证器将CSV导入SQL

时间:2012-05-16 09:47:19

标签: asp.net sql validation csv schema

我正在使用schema.ini在加载到SQL之前验证CSV文件中的数据类型/列。如果一行中存在数据类型不匹配,它仍将导入该行但将该特定不匹配单元格留空。有没有办法可以阻止用户导入CSV文件,如果有任何问题和/或提供错误报告(即哪一行有问题)。

2 个答案:

答案 0 :(得分:0)

最好的方法是检查文件是否存在不匹配;但是在大文件的情况下,这是不可行的。 您可能需要首先加载它,检查表中的加载数据是否存在不匹配。这比检查文件快得多(您可以使用简单的T-SQL脚本来检查表中的空值)。 如果发现不匹配,则可以通知用户,然后可以清除该表。

答案 1 :(得分:0)

看看他的FileHelpers库:http://www.filehelpers.com/

这是一个非常强大的库,用于执行各种导入,包括csv,它们也有一个非常整洁的错误处理部分

  

使用不同的错误模式FileHelpers库支持   用于3种错误处理。

     

在标准模式下,您可以在出现故障时捕获异常。   这种方法并不坏,但你失去了一些关于当前的信息   记录,你不能使用记录数组,因为没有作为符号。

     

更聪明的方法是使用ErrorMode.SaveAndContinue   ErrorManager中:

     

使用这样的引擎,您可以在记录中获得良好的记录   数组和在ErrorManager中你有te记录有错误,可以   做任何你想做的事。

     

另一种选择是忽略错误并继续显示错误   这个例子

     

1 engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue; 2   3条记录= engine.ReadFile(...复制到剪贴板|查看平原|   打印| ? engine.ErrorManager.ErrorMode =   ErrorMode.IgnoreAndContinue;

     

records = engine.ReadFile(...在记录数组中,你只有   好记录。