我从作为链接服务器连接的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
对此的协助将不胜感激。
谢谢
答案 0 :(得分:0)
您最初可以将数据插入到SQL Server中包含所有varchar()
列的工作表中。然后,您可以验证并解析工作表中的可能错误,将错误行移动到“错误”表以进行其他处理/报告。然后将剩余的行插入到实际的表中。
您应该查看SQL Server Integration Services,它提供了批量导入数据和处理错误行的方法,请参阅:SQL Server Integration Services Dealing with Bad Data