2010-09-01 62 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);