2011-04-05 84 views
0

你好我是SSIS和iam接收由SSIS創建的文本文件iam使用嚮導將其加載到oracle表,但在文本文件中有列包含字符串NULL和其他包含空白字符串零長度列的是有一個自動的方式,使這些值成爲表實際空值還是我必須創建的論文情況下每一個SSIS處理NULL和空格

謝謝派生列,

回答

-1

我不認爲有什麼辦法可以使用標準的平面文件源SSIS提供的。爲此,我使用一個稱爲分隔文件源的自定義組件,可以在此處下載它:http://ssisdfs.codeplex.com/。正如其名稱所示,它在處理分隔文件方面也更好,並且它還可以將空字符串視爲NULL。

enter image description here

+0

感謝你的明確的答案,但對字符串空怎樣才能使它作爲一個NULL – new 2011-04-06 10:42:23

+0

我不知道它會如何處理什麼,但你總是可以使用派生派生列將「空」字符串轉換爲NULL值的轉換。 – 2011-04-06 11:23:49

2

如果您使用SSIS 2008年,也從Tactek數據系統的空管理器組件。它不是免費的,但它非常便宜 - 就像10美元。 (www.tactek.com)。您可以將空字符串轉換爲空值,將空值轉換爲空字符串,並將空值轉換爲「填充」值,如「未知」或「不適用」。

4

如果要值轉換爲空,如果空/空你的輸入值,那麼你可以嘗試(在假設數據類型爲字符串/爲varchar):

LEN(TRIM([ColumnName]))==0 ? NULL(DT_WSTR, 10) : [ColumnName] 
1

我面臨着同樣的問題,您可以使用腳本組件,並通過所有列在下面添加到循環的代碼,代之以實際空值的每個文本空...

foreach (PropertyInfo dataColumn in Row.GetType().GetProperties()) 
{ 
    if (dataColumn.Name.ToLower().EndsWith("_isnull") == false && dataColumn.PropertyType == typeof(string)) 
    { 
      object objValue = dataColumn.GetValue(Row, null); 

      if (objValue != null && objValue.ToString() == 'NULL') 
      { 
       dataColumn.SetValue(Row, null, null); 
      } 
    } 
} 

代碼解釋是here

4

在用於Visual Studio 2015/SQL Server 2016的SQL Server數據工具中的SSIS項目中,解決空列處理的方法似乎是通過平面文件源組件的屬性(不確定空間 - 僅列資格):

  1. 右鍵單擊平面文件源並選擇顯示高級編輯器...
  2. 選擇組件屬性選項卡。
  3. Set RetainNulls屬性爲True(默認爲False)。

RetainNulls Property

+0

這是我的情況的權威答案。應該指出,這正確地區分「數據」,「」,「數據」(空字符串)和「數據」,「數據」(空字段)。 – aRBee 2017-04-10 20:28:01