如何在SSIS中管理巨型固定宽度文件?

时间:2013-10-08 23:48:54

标签: ssis flat-file

我有一个固定宽度的文件,大约1200个字符宽,大约有300多列。我正在寻找一种在SSIS中创建固定宽度数据源的方法,而无需使用平面文件连接管理器的UI。有没有办法修改列定义而无需在SSIS中使用UI?我无法在项目的任何位置找到数据连接的文件。

我注定要逐个手动地将300多列添加到平面文件连接管理器中吗?

1 个答案:

答案 0 :(得分:5)

有两种选择。第一个是安装BIDSHelper并使用Create Fixed Width Columns

另一个,正如@ElectricLlama所提到的那样是使用BIML。这也需要安装BIDS Helper,但要将.biml文件转换为.dtsx Short Walkthrough

这应该近似创建一个包含平面文件连接管理器(带有单个列)的包,添加数据流并在里面使用我们的平面文件并将其连接到行计数。这是您想要的近似值。只需在Columns标记中填写XML。

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
    <FlatFileConnection
        Name="FF dchess"
        FileFormat="FFF dchess"
        FilePath="C:\ssisdata\SO\Input\dchess.txt"
    />
</Connections>
<FileFormats>
    <FlatFileFormat
Name="FFF dchess"
CodePage="1252"
RowDelimiter="CRLF"
IsUnicode="false"
FlatFileType="RaggedRight"
        >
        <Columns>
            <Column Name="MyColumn" Length="08"  DataType="AnsiString"  ColumnType="FixedWidth"  CodePage="1252" />
        </Columns>
    </FlatFileFormat>
</FileFormats>
<Packages>
    <Package Name="dchess" ConstraintMode="Linear" ProtectionLevel="DontSaveSensitive">
        <Connections >
            <Connection ConnectionName="FF dchess" />
        </Connections>
        <Variables>
            <Variable Name="CurrentFileName" DataType="String">C:\ssisdata\so\Input\dchess.txt</Variable>
            <Variable Name="RowCountInsert" DataType="Int32">0</Variable>
        </Variables>
        <Tasks>
            <Dataflow Name="DFT Load file" >
                <Transformations>
                    <FlatFileSource
                        Name="FF_SRC dchess"
                        ConnectionName="FF dchess"
                        RetainNulls="true">
                    </FlatFileSource>
                    <RowCount Name="CNT Source" VariableName="User.RowCountInsert"></RowCount>
                </Transformations>
            </Dataflow>
        </Tasks>
    </Package>
</Packages>
</Biml>

生成的包看起来像

enter image description here

随意从地上捡起你的下巴;)

相关问题