2013-05-02 69 views
3

有沒有人有任何使用EzAPI與平面文件作爲數據源的例子?文檔中的所有示例都以OleDB連接開始。平面文件源與EzApi

具體而言,我不能解決如何定義輸入和輸出列。

舉例來說,我有一個CSV文件,其中包含名字,姓氏和年齡的列。我想把它讀入SSIS,按年齡分類並寫入另一個文本文件。

根據這篇文章How to use EzAPI FlatFile Source in SSIS?我需要手動定義列,但我無法得到建議的代碼工作。

如果我做的:

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

     pkg.Source.InsertOutputColumn("col0"); 

} 

bool newColumnExists = pkg.Source.OutputColumnExists("col0"); 

newColumnExists還是假的。

+0

元素不能在集合中找到:如果你想添加列在平面文件中使用此代碼

。當您嘗試在程序包執行期間從容器上的集合中檢索元素並且該元素不存在時,會發生此錯誤。 – 2013-07-02 16:22:45

回答

0

我認爲這個鏈接將幫助您:http://blogs.msdn.com/b/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx

,你會了解如何創建一個。

var flatFileCm = new EzFlatFileCM(this); 
flatFileCm.ConnectionString = file; 

    foreach (var column in columns) 
    { 
    // Add a new Column to the Flat File Connection Manager 
    var flatFileColumn = flatFileCm.Columns.Add(); 

    flatFileColumn.DataType = DataType.DT_WSTR; 
    flatFileColumn.ColumnWidth = 255; 

    flatFileColumn.ColumnDelimiter = columns.GetUpperBound(0) == Array.IndexOf(columns, column) ? "\r\n" : "\t"; 

    flatFileColumn.ColumnType = "Delimited"; 

    // Use the Import File Field name to name the Column 
    var columnName = flatFileColumn as IDTSName100; 
    if (columnName != null) columnName.Name = column; 
} 
flatFileCm.ColumnNamesInFirstDataRow = true;