我正在使用SSIS从Oracle导入数据集。 SSIS给我警告:
由于从长度为28的数据库列“第三方”中检索到长度为25的数据流列“第三方”中的数据,因此可能会发生截断。”
警告没有意义。目标是一个SQL Server数据库,其中属性为[Third Party]
为nvarchar(255)
。
为什么工具会给我这个奇怪的错误?
我尝试更改nvarchar(max)
的长度。这并没有改变。
select
case
when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 0
then 'Host'
when XTNL_HOS_FLG = 0 and VND_MG_APL_FLG = 1
then 'Support or Manage'
when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 1
then 'Host and (Support or Manage)'
else ''
end as "Third Party"
from
table1
答案 0 :(得分:3)
您应该通过右键单击Source Target在“数据流任务”的“显示高级编辑器”中查看。 然后转到“输入和输出属性”选项卡,并检查列的长度。 在目标目标上执行相同的操作。
取决于获取数据的方式,列的类型和长度与数据库不同。
希望对您有帮助。
Mariana
答案 1 :(得分:0)
由于您使用SQL命令作为源,因此可以编辑命令并强制源列长度,以帮助OLEDB源识别它。您可以使用CAST函数来做到这一点:
select CAST(
case
when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 0
then 'Host'
when XTNL_HOS_FLG = 0 and VND_MG_APL_FLG = 1
then 'Support or Manage'
when XTNL_HOS_FLG = 1 and VND_MG_APL_FLG = 1
then 'Host and (Support or Manage)'
else ''
end AS NCHAR(255)) as "Third Party"
from
table1
答案 2 :(得分:0)
我是这样做的:我使用命令 left(column,n) 来匹配输出文件。