SSIS 2012列标题对于列宽提取固定宽度平面文件而言太长

时间:2015-12-02 01:01:12

标签: ssis ssis-2012

我试图将sql数据库中的表提取到固定宽度的平面文件中。

  • 该文件应该有一个列标题
  • 我正在尝试重新创建一个已存在的文件,其中某些列的标题(例如,宽度为1的Gender)的列名称对于列的格式来说太长了。
  • 现有文件只是切断了这些列标题,因此Gender(目标的db列名和输入列变为'G' - 恰好适合..但当我尝试通过指向重现SSIS 2012中的提取时在创建flatFile connectionManager时在现有文件中它在没有标题的情况下工作,但在我检查“第一个数据行中的列标题”时则不行。

有没有办法将列名更改/缩短到适合格式的名称?我使用“参差不齐”的文件格式,数据看起来很完美而没有列标题。

感谢任何帮助。

史蒂夫

1 个答案:

答案 0 :(得分:0)

SSIS 真的喜欢一致的元数据。平面文件定义指定性别是长度为1,并且它将列标题保持为与其保存数据的标准相同。我对固定宽度文件的体验是他们从来没有过标题,当他们有几千字节宽时很痛苦,这很可能是由于这个问题。

您可以做的是在平面文件目的地中手动指定标题行。

enter image description here

在我的Connection Manager中,取消选中First Row中的Column Names并将Header Rows的值增加为1。

enter image description here

在我的示例中,我使用了以下查询

SELECT
*
FROM
(
    VALUES
    ('AAAAAAAAAAAAAAAAAA','BBBBBBBBBBBBBBBBBBBBBBBB','M','CCCCCCC')
)D(c1, c2, Gender, c4);

这会产生一个看起来像

的输出文件
Col1Is18BytesWide NextColumnAlignsWithNextGenderSeeWhatIDidThere
AAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBMCCCCCCC

这可能是也可能不是您正在寻找的解决方案。我认为这让我很生气,因为列标题与数据值不对齐,但你永远不知道其他系统对数据的期望。