2017-04-14 67 views
2

我在文件夾中有多個平面文件(.csv)作爲我的源文件。每個文件具有不同數量的列,這些列可能與其他文件相交也可能不相交。但是,任何源文件中的所有列都始終存在於包含所有這些列的超集的目標表中。數據流SSIS-公共目標表,不同結構的平面文件

我的要求是遍歷每個這些文件,並動態地將該文件中可用的列映射到目標表(csv文件的表頭名稱匹配表中的列名稱)。

Structure of File 1: 
id, name, age, email 

Structure of File 2: 
id, name, age, address, country 

Structure of File 3: 
id, name, age, address 

Structure of Destination Table: 
id, name, age, address, country, email 

我想用數據填充所有列的表什麼是可用的和NULL什麼不是爲每個記錄。我如何使用SSIS實現這一點?

+1

最無痛的方法是從三個文件中插入的所有記錄到臨時/臨時表和執行一個存儲過程,用你的邏輯填充表格。你可以把你所有的組合邏輯在SSIS本身,但是這更麻煩的... – Siyual

回答

-1

Flat File Source不支持動態文件格式,您必須使用多個來源來加載這些文件。

+0

這是不對的,你可以做忽略'平面文件連接manager'(讀行一列)列和使用derrived其拆分列或腳本 – Yahfoufi

0

你可以通過添加一個Flat File Connection Manager數據類型DT_WSTR4000長度只添加一列這樣做(假設它的名字是Column0

  • dataflow taskFlat File Source
  • 後添加 Script Component
  • 在標記Column0作爲輸入列和添加6輸出列(id, name, age, address, country, email)
  • Input0_ProcessInputRow方法中拆分此列並將值分配給輸出列。 (你可以寫你想要的邏輯)你可以閱讀以下問題的答案得到一個例子:Reading CSV file some missing columns