2010-09-01 55 views
0

我使用EzAPI创建具有FLATFILE来源如何在SSIS中使用EzAPI FlatFile源代码?

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

从乡亲http://blogs.msdn.com/b/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx

我相信它会自动确定源列内置平面文件连接管理器UI,且无法通过代码访问逻辑(东西我肯定会想改变) 。从我的代码示例中,看起来您需要手动定义列。

ex。

 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);