我正在使用SqlBulkCopy类将DataSet插入到SQL Server数据库的一对表中。
有时输入数据无法轻易转换为目标列所需的数据类型。这会导致InvalidOperationException,并带有以下描述:
数据源中String类型的给定值无法转换为指定目标列的smalldatetime类型。
InnerException说:Failed to convert parameter value from a String to a DateTime.
我的表中有多个DateTime字段;如何找出导致异常的字段?
答案 0 :(得分:1)
对于此任务,您可能应该使用SQL Integration Services。有了它,您可以将有问题的行重定向到文件进行更正,以及其他可以使您的工作更轻松的功能。
请参阅:http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx
答案 1 :(得分:1)
唯一的解决方案是分裂征服。使用缺少的列进行测试插入,直到您已使用isdate函数隔离列或创建选择(如果可能是过时范围问题,则查找哪些列或行有问题
答案 2 :(得分:0)
在我的情况下,这是由于良好的老式英国和美国日期格式!我的数据库使用英国,但有些字符串日期使用美国格式。
答案 3 :(得分:0)
您可以尝试自行转换数据,然后再将其添加到DataSet
。这应该突出狡猾的数据。