到目前为止,我已成功使用 BIML 自动生成 SSIS 包(从 CSV 到 SQL Server)。但是我遇到了在平面文件格式中有 Varchar(MAX) 列的问题。
问题是如果我以平面文件格式定义大小为-1的AnsiString类型的列,则输出 SSIS 包会显示以下警告
以下输出列的元数据与输出列关联的外部列的元数据不匹配。
如果我单击“是”,问题会自行解决,但这是我最后的选择,因为我有 150 个包裹。
当我检查平面文件源组件的高级选项时,我可以看到注释列的数据类型有所不同,外部列显示为 DT_TEXT,而输出列显示为 DT_STR。:(
我不明白的是,为什么当所有其他列都工作正常时,输出列只为 Varchar(Max) 显示不同的数据类型。输出列不是从外部列生成的吗?
请参阅下面的 biml 代码。
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<FileFormats>
<FlatFileFormat Name="MetadataFileFormat" RowDelimiter="LF" ColumnNamesInFirstDataRow="true" IsUnicode="false">
<Columns>
<Column Name="Category" DataType="AnsiString" Length="128" Delimiter="|" CodePage="1252" />
<Column Name="Comments" DataType="AnsiString" Length="-1" Delimiter="|" />
<Column Name="DisplayName" DataType="AnsiString" Length="256" Delimiter="CRLF" />
</Columns>
</FlatFileFormat>
</FileFormats>
<Connections>
<FlatFileConnection Name="FF_Test" FilePath="C:\Data\Sample.csv" FileFormat="MetadataFileFormat">
</FlatFileConnection>
</Connections>
<Packages>
<Package Name="FFTest" ConstraintMode="Linear">
<Tasks>
<Dataflow Name="DFT Load Data">
<Transformations>
<FlatFileSource Name="FF_SRC" ConnectionName="FF_Test">
</FlatFileSource>
</Transformations>
</Dataflow>
</Tasks>
</Package>
</Packages>
</Biml>