【问题标题】:Import CSV to SQL using schema.ini as validator使用 schema.ini 作为验证器将 CSV 导入 SQL
【发布时间】:2012-06-01 22:35:31
【问题描述】:

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

【问题讨论】:

    标签: asp.net sql validation csv schema


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      在标准模式下,您可以在发生故障时捕获异常。 这种方法还不错,但是您会丢失一些有关当前的信息 记录,你不能使用记录数组,因为没有分配。

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

      使用这样的引擎,您可以在记录中获得良好的记录 数组,在 ErrorManager 中你有错误的记录并且可以 随心所欲。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-26
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多