2016-07-20 1 views
1

私は、各レコードの長さが変化するテキストファイルを持っています。私はそこにいくつの列があり、列の区切り文字が気にしません。 SSISを使用して長さを同じにしたいのは、単一列の固定幅ファイルです。キャラクターの強さが他のキャラクターに比べて劣るレコードにスペースを追加したい。私はファイル内で最大の長さが何か分からない。SSISを使用してテキストファイルの各レコードを同じ長さにする方法は?

...私と一緒に

おかげで、いくつかの知識を共有して下さい!

+0

私の最初の考えはそれをしないでください。次に何を考えた?接続マネージャーが区切り文字を無視して1つのフィールドとしてインポートするようにしたい場合は、デリミターを存在しない組み合わせ(おそらくパイプ|)に設定するだけです。または、区切りファイルを固定幅のファイルに変更し、データフローを使用し、長さに基づいてセルをパディングする計算列を追加する場合 – Matt

答えて

0

レスキューのためのスクリプトタスク。お使いのフラットファイルは、ファイル内の各行すなわち行あたりの均一な区切り文字は言うカンマで区切られていると仮定すると、移動するための方法は、およそだろう -

  1. ドラッグスクリプトタスクの変換と入力フラット・ファイルのファイルパスを渡します
  2. ファイルを1行ずつ読み込みます。
  3. ループを使用して、区切り文字(カウントを取得するために分割関数を使用できます)をキーとして取得し、行全体を値として取得します。この結果セットを辞書オブジェクトに格納する。
  4. Dictionary.Keys.Max()関数を使用して、キーの最大値を辞書から取得します。 (基本的には1行あたりの区切り文字の最大数)をMaxCountという変数に格納します。
  5. 各キー/値のペアをループします。 MaxValueより小さいKey値を持つ各行について、空の空の区切り文字を追加します。つまり、行ごとの最大区切り文字が5で、行に2しかない場合は、各ループにaを使用して、3つの空白区切り文字'
  6. StreamWriterを使用すると、辞書のすべての値が新しいファイルに取得されます。

これを達成するには、System.IOおよびSystem.LINQクラスを使用する必要があります。 SSIS 2008で使用する場合は、Project Frameworkが3.5に設定されていることを確認してください。

新しいファイルの長さは一定です。

関連する問題