War*_*ren 5 sql t-sql sql-server
在一个简单的INSERT命令,我收到一个错误:
转换数据类型时出错...
源数据具有多个源,并且组合成数十万行.
我可以重写我的语句以捕获错误并显示有问题的数据吗?
谢谢!
编辑:
代码请求:
insert Table_A
([ID]
,[rowVersion]
,[PluginId]
,[rawdataId]
...
...
...
)
select [ID]
,[rowVersion]
,[PluginId]
,[rawdataId]
...
...
...
FROM TABLE_B
Run Code Online (Sandbox Code Playgroud)
在处理这个问题时,我采取了两种方法.该问题是由字符串到日期的隐式转换引起的.
如果你碰巧知道正在转换哪个字段(在你的例子中可能是真的,但并不总是在我的中),那么就这样做:
select *
from table_B
where isdate(col) = 0 and col is not null
Run Code Online (Sandbox Code Playgroud)
这对于所有数据类型可能都不是完美的,但它在实践中对我来说效果很好.
有时,当我想在select语句中找到有问题的行时,我会运行select,将数据输出到文本而不是网格.这是SSMS中的选项之一,沿着菜单下方的图标行.它将在错误之前输出所有行,这样可以识别出错误的行.当有一个order by子句时,这种方法效果最好,但出于调试目的,它对我有用.
在您的情况下,我可能会创建一个包含字符串的临时表,然后对此临时表进行分析,特别是如果Table_B不是一个表而是一个更复杂的查询.
| 归档时间: |
|
| 查看次数: |
2649 次 |
| 最近记录: |