如何在SSIS中使用EsAPI平面文件源?

时间:2010-09-01 18:15:38

标签: c# sql-server-2008 ssis etl ezapi

我正在使用EzAPI创建一个包含FlatFile Source的数据流

public class EzOleDbToFilePackage : EzSrcDestPackage<EzFlatFileSource, EzFlatFileCM, EzOleDbDestination, EzSqlOleDbCM>

使用http://blogs.msdn.com/b/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx中的示例我正在尝试使用平面文件源。但是在平面文件源/连接中,我无法映射平面文件中的列。

zFlatFileSource是否有类似Dest.DefineColumnsInCM()的内容?

在BIDM中,当我打开创建的包时,我看到EzFlatFileCM说没有为此连接管理器定义列。只要我点击列,它就会自动检测到所有内容并且错误消失。我需要在代码中调用哪种方法让EzFlatFileSource自动选择这些列?

1 个答案:

答案 0 :(得分:1)

来自http://blogs.msdn.com/b/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx的人

我认为自动确定源列的逻辑内置于平面文件连接管理器UI中,并且无法通过代码访问(我肯定想要更改的内容)。从我的代码示例中,您似乎需要手动定义列。

离。

       pkg.SrcConn.Unicode = (fileFormat == FileFormat.UNICODE);

       pkg.SrcConn.ConnectionString = srcFile;

       pkg.SrcConn.Columns.Add().DataType = dataType;

       pkg.SrcConn.Columns[0].ColumnType = "Delimited";

       pkg.SrcConn.ColumnNamesInFirstDataRow = false;

       pkg.SrcConn.ColumnDelimiter = ",";

       pkg.SrcConn.RowDelimiter = "\r\n";

       pkg.SrcConn.TextQualifier = "\"";

       pkg.SrcConn.Columns[0].TextQualified = testObject.textQualified;

       if (!pkg.Source.OutputColumnExists("col0"))

       {

           pkg.Source.InsertOutputColumn("col0");

       }

       pkg.Source.SetOutputColumnDataTypeProperties("col0", dataType, testObject.length, testObject.precision, testObject.scale, testObject.codePage);