【问题标题】:SSIS 2012 column header is too long for column width Extracting fixed width flat fileSSIS 2012列标题对于列宽来说太长提取固定宽度的平面文件
【发布时间】:2015-12-02 01:01:12
【问题描述】:

我正在尝试从 sql 数据库中提取一个表到一个固定宽度的平面文件中。

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

有没有办法将列名更改/缩短为适合格式的名称?我正在使用“不规则正确”的文件格式,数据看起来很完美,没有列标题。

感谢任何帮助。

史蒂夫

【问题讨论】:

    标签: ssis ssis-2012


    【解决方案1】:

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

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

    在我的连接管理器中,我取消选中第一行中的列名并将要跳过的标题行值增加到 1。

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

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

    这导致输出文件看起来像

    Col1Is18BytesWide NextColumnAlignsWithNextGenderSeeWhatIDidThere
    AAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBMCCCCCCC
    

    这可能是也可能不是您正在寻找的解决方案。我认为看到列标题与数据值不一致,但您永远不知道其他系统如何期望他们的数据,这会让我发疯。

    【讨论】:

    • 嗨,billinkc,抱歉回复延迟 - 我正忙于实施这个解决方案,非常简单,完美解决了问题!您的描述简洁明了,也易于理解。再次感谢。是的,这是一个愚蠢的问题,但限制让我复制与旧解决方案完全相同的文件......哦,好吧。再次感谢。
    猜你喜欢
    • 2023-03-27
    • 2013-04-09
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多