簡體   English   中英

如何創建單獨的轉換文件而不是覆蓋 ssis 輸出平面文件?

[英]How to create separate transformed file instead of overwrite ssis output flat file?

我有一個數據流,用於對每個循環容器中的給定文件夾中的多個平面文件進行轉換。 我再次有一個平面文件作為輸出文件。 問題是每次我執行作業時,只有最后一個被轉換的文件才會存儲在目標文件中。 有沒有辦法在 SSIS 中創建單獨的轉換輸出文件,而不是一遍又一遍地覆蓋同一個文件?

為了。 例如。 我在一個文件夾中有 5 個平面文件 ,test_1.txt,test_2.txt,test_3.txt,test4_.txt 和 test_5.txt。 作業運行后,我只能看到最后一個文件 test_5.txt 中的數據在我的目標文件中被轉換。

這是我測試的一個工作示例的步驟。

變量

我定義了 3 個變量:

在此處輸入圖片說明

  • FileName - 用於 foreach 循環
  • DestinationDir - 文件去哪里
  • SourceDir - 我要處理的文件在哪里

Foreach 循環設置

我有一個 foreach 循環配置為: 在此處輸入圖片說明

  • “目錄”的表達式設置為 @[User::SourceDir]
  • 檢索文件名設置為“名稱和擴展名”

然后在“變量映射”下: 在此處輸入圖片說明

這意味着當 foreach 循環遍歷目錄中的文件時,它會將文件的“名稱和擴展名”設置為變量 @[User:FileName]

數據流任務

我在 foreach 循環中添加了一個數據流任務: 在此處輸入圖片說明

然后在 DFT 中,我有一個簡單的平面文件源到平面文件目標。 我們只是將每個文件的內容傳遞給新文件:

在此處輸入圖片說明

在最初的開發過程中,我將手動選擇一個文件來逐步設置每個源和目標。 然后回來更改連接管理器並在 ConnectionString 上設置一個表達式。

連接管理器表達式

源文件連接管理器: 在此處輸入圖片說明

  • ConnectionString 得到一個表達式:@[User::SourceDir] + @[User::FileName]

目標文件連接管理器: 在此處輸入圖片說明

  • ConnectionString 得到一個表達式:@[User::DestinationDir] + @[User::FileName]

測試

我的源目錄中有 2 個測試文件,而目標目錄中沒有文件: 在此處輸入圖片說明

在我執行我的包后,我獲得了成功,並在我的目的地獲得了新文件: 在此處輸入圖片說明 在此處輸入圖片說明

有多種方法可以使用變量和表達式在 SSIS 中執行您所要求的操作,但有一種更簡單的方法可以使用命令行來完成它。

由於您只是將文本文件合並為 1,因此您可以使用命令提示符來更好地處理您的問題:

copy *.txt output.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM