ssis 中的数据转换任务不允许重用现有列以轻松自动映射到目标。
所以我编写了一个 foreach 列并评估了数据类型,将其动态添加到列集合中。
我注意到 DataType 和 Length 是必需的,但是它们对 ReplaceExisting=true 没有影响。
有没有人找到一种方法来强制使用 biml 在派生任务中转换新数据类型?
这不起作用。
在生成 SSIS 包时,使用 (DT_WSTR,length) 转换列确实会出现,但不会更改派生任务中为该列定义的数据类型。
<DerivedColumns Name="der_conversions">
<Columns>
<#
foreach(var column in table.Columns)
{
if(column.DataType == System.Data.DbType.AnsiString)
{
#>
<!-- the DataType and Length are required however they have no effect for ReplaceExisting=true -->
<Column ReplaceExisting="true" Name="<#=column.Name#>" DataType="String" SsisDataTypeOverride="DT_WSTR" Length="<#=column.Length#>"><#=column.Name#></Column>
<#
}//endif
}//endforeach
#>
</Columns>