2012-10-25 42 views
2

我有一個具有200列以上的源表,我將它放入SSIS中,並使用「OLEDB Source」組件來提供數據,然後將流映射到Derived Column Transformation以處理空數值/日期/文本數據通過用空白值替換它。SQL SSIS使用派生列轉換來處理空數據..可選項?

ISNULL([EMPLOYEE ID]) ? "" : [EMPLOYEE ID] 

ISNULL([EMPLOYEE FNAME]) ? "" : [EMPLOYEE FNAME] 

等等

因爲我有200多列,我會在派生這樣做200次:

目前,我在我的派生列下面的表達式設置轉換,有沒有更好的方式來處理這個使用SSIS?

在Windows 2008R2上運行SQL Server 2008 Standard。

回答

0

我最終堅持使用SSIS的派生列轉換並插入每列並檢查ISNULL([EMPLOYEE FNAME])? 「」:[EMPLOYEE FNAME],因爲這是我最熟悉的方法。

3

在SSIS中,您可以使用派生列/腳本轉換[作爲轉換]並編寫代碼以將NULL轉換爲空白。 SSIS中沒有其他選擇。 SSIS將創建緩衝區來處理計算。它會放慢你的SSIS包。我的建議是嘗試在SQL查詢中使用ISNULL函數或COALESCE函數,並將NULL轉換爲空白,以便所有轉換都將在Serverside本身中進行。

Select ISNULL(EmployeeId,'') 

Select COALESCE(EmployeeId,'') 

希望這有助於。

+0

同意 - 在數據庫服務器上處理諸如空值之類的東西通常要好得多,除非SSIS機器比DB服務器更強大(通常不是這種情況)。 –

+1

值得一提的是,您可以在數據庫的視圖中執行此操作,這比將查詢嵌入SSIS包本身可能更方便。 – Pondlife