链表中的错误数据

时间:2014-12-02 21:35:37

标签: casting sql-server-2012 openquery

我从作为链接服务器连接的cobol数据库将数据提取到SQL Server。 我们最终得到了一个表格中的错误数据,我正在努力追踪违规记录。具体来说,我们在年份字段中输入了一个字母,当SQL拉取数据时,它会尝试将该列转换为数字数据类型。

我相信我需要的是openquery和cast的组合,以选择至少具有特定列为varchar的所有列,以便我可以检索特定的违规记录并拥有dept。修复错误。

我尝试了以下两种语法,但都产生错误。

select * from [incode]...ctvehl 
 where VEH_YEAR like '992D'

select * from openquery (incode, 'select cast(* as nvarchar) from ctvehl')

为了清晰起见

 linked server name = incode
  table name = CTVEHL
  Specific offending column = VEH_YEAR

对此的协助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

您最初可以将数据插入到SQL Server中包含所有varchar()列的工作表中。然后,您可以验证并解析工作表中的可能错误,将错误行移动到“错误”表以进行其他处理/报告。然后将剩余的行插入到实际的表中。

您应该查看SQL Server Integration Services,它提供了批量导入数据和处理错误行的方法,请参阅:SQL Server Integration Services Dealing with Bad Data