2013-04-20 25 views
2

我正在尋找一個戰略,以應對以下Excel到DB-問題(SQL Server 2012中):與不斷變化的Excel表格處理結構導入到數據庫表

的投入將是Excel文件相同的主題,但這些Excel文件中的列設置可能會每月更改,這意味着列將被刪除或添加到這些Excel文件中,這不是維護db-table結構的「最大」方案。

請注意,更改Excel文件時,文件名/ ID也會更改。

因此,這些文件存儲(通過SSIS)在一個單一的數據庫表我會使用列名COL1至科隆成立了「通用」結構。然後,我將爲每個Excel文件添加一個版本字段,以便我可以創建某種類型的映射表,其中根據版本定義正確的列名稱。基本上新的一個月將創建一個新的版本號。這應該幫助我創建一個視圖來提取具有適當列名稱的所有版本。

在第一個版本中,我有大約120列來處理。

我還有一個「crosstable -scenario」,因爲某些列包含年份值。 例如,假設輸入文件包含Savings 2009,Savings 2010,Savings 2011列。如果在版本2中添加了Savings 2012列,我需要在db-table中創建另一列,除非「Savings 2009」被刪除,並且我將2010的值添加到了「2009列」中。

你看這是一團糟!

有了這個結構,我將不得不改變導入工作流並調整名稱映射,但我想不出一個更好的方法來處理這個問題。

我是否需要將列拆分到不同的表中?

我希望我的問題,遇到和你能引導我到一個乾淨,「無憂」 :-)

解決方案正如你可能已經猜到了,我沒有對輸入文件多少影響我需要處理。

謝謝。

回答

1

我面對這個問題很多。通常,商業用戶通常更喜歡處理Excel文件。這些信息在數據庫中是需要的。以下是我的戰略。

首先,我有一個存儲過程讀取Excel表。該存儲過程從一行讀取標題,並從另一行讀取數據。它將標題指定爲列名稱,並將格式指定爲列的數據庫類型。

其次,我保留表格的前一個版本。如果某列已經消失或更改了類型,那麼我會生成一封電子郵件來通知問題。通常,新版本是正確的版本,我只是接受它作爲正確的表格。這提供了一個反饋循環。

該解決方案允許用戶控制他們的文件。它還保證在表上運行的查詢將處理新數據,因爲列名和數據類型保持不變。

相關問題