2012-01-16 73 views
1

我是一個SSIS的完整新手。如何驗證列導入到數據庫之前

我有一個c#/ sql服務器的背景。

我想知道在數據進入數據庫之前是否可以驗證數據。我從|(管道)分隔文本文件中抓取文本。

例如,如果某個數據點是null,然後將其更改爲0或如果特定數據點的長度爲0,然後換"nada"

我不知道這對SSIS來說是否可行,但如果您能指出我正確的方向,那將是最有幫助的。

回答

5

任何事情都可以與SSIS!

在您的平面文件數據源之後,使用派生列轉換。派生一個新的列,其表達式如下所示。

ISNULL(ColumnName)? 「nada」:ColumnName

然後在您的數據源目標中使用這個新列。

希望它有幫助。

+0

謝謝我如何將C#代碼插入到ssis中? – 2012-01-18 17:24:33

+1

使用工具箱中的「腳本任務」。如果要爲集合的每一行編寫腳本,請使用「Foreach ADO Enumerator」並將值作爲變量傳遞給「腳本任務」。然後,您可以使用「Dts.Variables [」variableName「]。Value」來訪問主要方法中的變量。 – Christo 2012-01-18 23:22:02

+1

僅供參考 - 我上面的原始答案不是c#代碼,它是SSIS表達式語法。請參閱此鏈接瞭解更多信息。 http://msdn.microsoft.com/en-us/library/ms140206.aspx – Christo 2012-01-18 23:32:44

1

我不知道,如果你使用SSIS是死心塌地,但我一般用於文本文件的數據導入到數據庫的基本方法通常有兩個階段:

  1. 使用BULK INSERT加載將該文件轉換爲數據庫服務器上的臨時登臺表;該臨時表中的每個列都可以合理容忍它們包含的數據,如varchar(max)
  2. 編寫驗證例程以更新臨時表中的數據,並根據需要仔細檢查以確保格式正確,然後將列轉換爲最終格式並將行推送到目標表中。

我喜歡這種方法,主要是因爲BULK INSERT可能對它吐出的錯誤有點神祕;通過臨時登臺表,與通過文本文件生根相比,查看數據集並迅速修復錯誤要容易得多。

相關問題