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