BIML生成的固定宽度平面文件连接中二进制列OutputColumnWidth为0的问题咨询
解决BIML生成固定宽度平面文件时二进制列OutputColumnWidth为0的问题
我之前也碰到过一模一样的问题,这其实是BIML处理固定宽度二进制列时一个容易忽略的细节:BIML不会自动为二进制类型的固定宽度列映射OutputColumnWidth属性,但字符串类型列会自动根据Length值填充这个属性,所以才会出现只有二进制列配置异常的情况。
问题原因
在SSIS的平面文件连接管理器中,二进制列的OutputColumnWidth需要明确指定才能正确解析固定宽度的二进制数据,但BIML里的Length属性主要对应列的存储长度,并不会自动同步到OutputColumnWidth上——而字符串列的Length会被BIML自动用作OutputColumnWidth的值,所以字符串列的配置完全正常。
解决方案
只需要在二进制列的BIML定义中手动添加OutputColumnWidth属性,将其值设置为和Length、MaximumWidth一致的数值即可。
修改后的BIML代码示例:
<FlatFileFormat Name="(FFF) MyFixedWidthFlatFile" CodePage="1252" FlatFileType="FixedWidth" RowDelimiter="" IsUnicode="false" TextQualifier="_x003C_none_x003E_"> <Columns> <Column Name="HEADER" DataType="Binary" Length="2" OutputColumnWidth="2" Delimiter="" TextQualified="false" ColumnType="FixedWidth" MaximumWidth="2"></Column> <Column Name="DESCRIPT" DataType="AnsiString" Length="30" Delimiter="" TextQualified="false" ColumnType="FixedWidth" MaximumWidth="30"></Column> </Columns> </FlatFileFormat>
添加OutputColumnWidth="2"后,重新生成SSIS包,你会发现二进制列的OutputColumnWidth已经正确设置为2,和字符串列一样可以正常解析固定宽度数据了。
内容的提问来源于stack exchange,提问作者Simon Blais
相关产品推荐
相关产品推荐

