使用SqlBulkCopy的空字符串,空值和Money类型

时间:2013-05-01 04:37:26

标签: c# null sqlbulkcopy string tab-delimited

我有一些TAB分隔的文本文件,我必须每个月使用ASP.NET内部网页导入到SQL Server。我一直使用the Generic Parser found here将文件导入DataTables,然后使用列映射将SqlBulkCopy导入SQL Server表。一切都工作得很好,直到我找到一个破坏它的特定文件。

此文件中有几行在特定位置具有值。它们映射到的列是SQL Server中的 money 类型,但它设置为允许NULL。每次我尝试加载该文件时,它都会返回一个错误,它无法运行SqlBulkCopy,因为转换失败从字符串转为money。我已经证实这是一个破坏它的缺失值。显然,解析器将列保留为空字符串,并且SqlBulkCopy不假设empty = null(大多数事情没有),因此它没有将“无”放入货币字段。

在引入文本文件时,我无法在解析器中找到任何用空格替换NULL的设置。 SqlBulkCopy.WriteToServer()似乎根本没有任何属性,所以我找不到它的修复方法。有谁知道其中任何一个都可以调整吗?我想在导入之前尝试更好地定义DataTable,但是这个过程处理了不同的文件规范,所以我认为这不可行。

有没有办法通过DataTable并将所有空字符串更新为NULL?我现在能想到的唯一方法就是循环使用这些RBAR,因为其中许多文件都有数万行,所以这种方法无法工作。也许在导入之前可以用正确的数据类型替换整个列?我真的愿意接受任何事情,只要它不会花费很长时间来执行或让我重写整个过程。

0 个答案:

没有答案
相关问题