0

Execute Process Task[制御フロー] タブがオンになっている SSIS パッケージがあります。notepad.exeテキストファイルを読み取るためにタスク内で呼び出しています。テキスト テストがすべての行の最初の列にプレフィックスされるように置き換えようとして\r\nいます。\r\n\testThie では正しい結果が得られません。

テキストファイルデータ:

Line 1{CR}{LF}
Line 2{CR}{LF}
Line 3

期待される出力:

TestLine 1{CR}{LF}
TestLine 2{CR}{LF}
TestLine 3

Execute Process Taskを使用してnotepad.exeを使用してこの出力を達成できません。Execute Process Taskを使用してこの出力を達成するにはどうすればよいですか? これを行うことができる SSIS の他のタスクはありますか?

4

1 に答える 1

2

処理タスクの実行:

プロセス実行タスクは、実行しようとしているタスクに適していません。ファイルの内容をScript Task読み取って、選択したテキストを行の前に付けるか、 を使用しData Flow Taskて、コーディングなしで構成を通じて同じことを実現できます。

例を示す SSIS 2012 パッケージ:

SSIS 2012 を使用して作成された以下のパッケージは、テキスト ファイルの内容を読み取り、各行の前にテキスト フレーズを付けて、出力を別のフラット ファイルに書き込む方法を示しています。

Products.txt各行がキャリッジ リターンとライン フィード文字で終わる次の情報を含む、という名前のファイルを読み取る必要があるとします。{CR}{LF}

ソースファイル

という名前の SSIS パッケージを作成しますSO_15213317.dtsx。このサンプルでは SQL Server Data Tools (SSDT) 2012 を使用してパッケージを作成しますが、この例のロジックは古い SSIS バージョン 2005 ~ 2008 R2 に適用できます。

を [制御フロー] タブにドラッグ アンド ドロップしData Flow Taskます。パッケージの下部にある [接続マネージャー] タブを右クリックし、[ ]をクリックします。この接続マネージャーは、ソース ファイルの読み取りに使用されます。New Flat File Connection...

SSIS パッケージ

フラット ファイル接続マネージャー エディターで、次の手順を実行します。

  • 名前をFILE_Products
  • 説明をRead the products information from flat file.
  • ファイルがある場所を参照し、ファイルを選択します。
  • 残りのプロパティは、ファイル内のデータに基づいて継承されます。
  • Column names in the first data rowファイルに列ヘッダーがある場合は、チェックボックスをオンにします
  • ページをクリックしColumnsます。

フラット ファイル接続マネージャー エディター - 全般

[列] タブをデフォルト設定のままにして、Advancedページをクリックします。

フラット ファイル接続マネージャー エディター - 列

詳細ページは、ヘッダー情報に基づいて列名を自動的に構成し、SSIS はデータ型についても適切に推測します。この場合、列のデータ型が文字列であると判断されています。

フラット ファイル接続マネージャー エディター - 高度な

[プレビュー] タブをクリックして、ファイル データを簡単に確認します。[OK] をクリックして、フラット ファイル接続マネージャー エディターを閉じます。

フラット ファイル接続マネージャー エディター - プレビュー

[制御フロー] タブの [データ フロー タスク] をダブルクリックして、[データ フロー] タブに切り替えます。データ フロー タスクで、 をドラッグ アンド ドロップしFlat File Sourceてソース ファイルを読み取ります。以下に示すように、フラット ファイル ソースを構成します。

フラット ファイル ソース エディター - 接続マネージャー

列は自動的に構成されます。[OK] をクリックして、フラット ファイル ソース エディターを閉じます。

フラット ファイル ソース エディター - 列

Testすべての行のテキストにプレフィックスを付けるには、 Derived Column Transformation. フラット ファイル ソースの後に派生列変換をドラッグ アンド ドロップします。フラット ファイル ソース派生列変換に接続します。新しい列を追加するか、既存の列を置き換えることができます。この例では、次の式を使用して新しい列を追加します。この式は、テキスト Test を column の入力値の前にProductName付けてから、長さ 54 文字の SSIS データ型 DT_WSTR に型キャストします。

(DT_WSTR,54)("Test" + ProductName)

派生列の変換

をドラッグ アンド ドロップしFlat File Destinationて、出力を別のテキスト ファイルに書き込みます。フラット ファイル送信先エディターで ボタンをクリックして、New...送信先ファイルの新しいフラット ファイル接続マネージャーを作成します。

フラット ファイル送信先エディター - 接続マネージャー

ダイアログで選択DelimitedFlat File Format、[OK] をクリックします。

フラットファイル形式

フラット ファイル接続マネージャー エディターで、次の手順を実行します。

  • 名前をFILE_NewProducts
  • 説明をWrite the data to the new product flat file..
  • ファイルを保存する場所を参照し、ファイルに名前を付けます。
  • 要件に従って、残りのプロパティを構成します。
  • Column names in the first data row列ヘッダーをファイルに書き込む必要がある場合は、ボックスをオンにします
  • ページをクリックしColumnsます。

フラット ファイル接続マネージャー - 全般

行と列の区切り記号を使用して列ページを構成します。

フラット ファイル接続マネージャー - 列

[詳細] ページで、列のProductName列をクリックし、 をクリックしますDelete。列には好きな名前を付けることができます。

フラット ファイル接続マネージャー - 高度な

列のみがNewProductName宛先接続マネージャーに残ります。[OK] をクリックします。

フラット ファイル接続マネージャー - 高度な

Flat File Destination Editorで、正しいフラット ファイル接続マネージャーを選択していることを確認します。

ファイル ファイル送信先エディター - 接続マネージャー

[マッピング]ページをクリックして、データを書き込むための列マッピングを構成します。

ファイル ファイル宛先エディター - 列

データ フロー タスクを構成すると、パッケージは次のようになります。

データ フロー タスク

パッケージを実行してソース ファイルを読み取り、テキスト プレフィックス付きの新しい出力ファイルを生成します。

パッケージの実行

新しく生成されたファイルNewProducts.txtには、プレフィックス テキスト フレーズが含まれます。Test

出力ファイル

その他のオプション:

ファイルを読み取るにはさまざまな方法があり、Script Task. ただし、ここでの例は、SSIS パッケージ内のテキスト ファイルを読み取る適切な方法を示しています。これにより、今後フラット ファイルまたは区切りファイルを扱う SSIS パッケージを設計する方法についてのアイデアが得られるはずです。

于 2013-03-05T01:14:24.743 に答える