Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用schema.ini作为验证程序将CSV导入SQL_Asp.net_Sql_Validation_Csv_Schema - Fatal编程技术网

Asp.net 使用schema.ini作为验证程序将CSV导入SQL

Asp.net 使用schema.ini作为验证程序将CSV导入SQL,asp.net,sql,validation,csv,schema,Asp.net,Sql,Validation,Csv,Schema,在加载到SQL之前,我使用schema.ini验证CSV文件中的数据类型/列。如果行中存在数据类型不匹配,它仍将导入该行,但将该特定不匹配单元格留空。是否有一种方法可以阻止用户在出现任何问题时导入CSV文件和/或提供错误报告(即哪一行有问题)。最好的方法是检查文件是否不匹配;但是对于大文件来说,这是不可行的。 您可能需要先加载它,然后检查表中加载的数据是否不匹配。这比检查文件快得多(您可以使用简单的T-SQL脚本检查表中的空值)。 如果发现不匹配,则可以通知用户并清除表。查看FileHelper

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

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

查看FileHelpers库:

这是一个非常强大的库,可以进行各种导入,包括csv,而且它们还有一个非常整洁的错误处理部分

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

在标准模式下,您可以在出现故障时捕获异常。 这种方法不错,但是你会丢失一些关于当前事件的信息 记录,而您不能使用记录数组,因为它不是asigned

更智能的方法是使用 错误管理器:

像这样使用引擎,你在记录中有良好的记录 数组,在ErrorManager中,您有带有错误的te记录,并且可以 你想去哪里就去哪里

另一个选项是忽略错误并继续在中显示的方式 这个例子

1 engine.ErrorManager.ErrorMode=ErrorMode.Ignore并继续;2. 3记录=engine.ReadFile(…复制到剪贴板|普通视图| 打印|?engine.ErrorManager.ErrorMode= ErrorMode.Ignore和Continue

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