在加载到 SQL 之前,我使用 schema.ini 来验证 CSV 文件中的数据类型/列。如果一行中存在数据类型不匹配,它仍将导入该行,但将该特定不匹配单元格留空。如果有任何问题和/或提供错误报告(即哪一行有问题),是否有办法阻止用户导入 CSV 文件。
2 回答
看看他的 FileHelpers 库:http ://www.filehelpers.com/
这是一个非常强大的库,可以进行各种导入,包括 csv,它们还有一个非常简洁的错误处理部分
使用不同的错误模式 FileHelpers 库支持 3 种错误处理。
在标准模式下,您可以在出现故障时捕获异常。这种方法还不错,但是您会丢失有关当前记录的一些信息,并且由于未分配而无法使用记录数组。
更智能的方法是使用 ErrorManager 的 ErrorMode.SaveAndContinue:
使用这样的引擎,您可以在 records 数组中获得良好的记录,而在 ErrorManager 中,您可以找到带有错误的记录,并且可以随心所欲地进行操作。
另一种选择是忽略错误并继续本示例中显示的方式
1 engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue; 2 3 条记录 = engine.ReadFile(... 复制到剪贴板 | 查看普通 | 打印 | ? engine.ErrorManager.ErrorMode = ErrorMode.IgnoreAndContinue;
records = engine.ReadFile(... 在 records 数组中你只有好的记录。
最好的方法是检查文件是否有任何不匹配;但是在大文件的情况下,那么这是不可行的。您可能需要先加载它,然后检查表中加载的数据是否不匹配。这比检查文件要快得多(您可以使用简单的 T-SQL 脚本来检查表中的空值)。如果发现不匹配,则可以通知用户,然后可以清除表。