1


1

SSIS:フラットファイルから文字を削除

SSISのフラットファイルから文字を取り除く最良の方法は何ですか? 私の場合、処理する前にファイルからすべての引用符を削除する必要があります。

編集: + SSISの一部のファイルに対して実行可能ファイルを実行するにはどうすればよいですか? 入力としてソース接続を何らかの方法で使用できますか、またはファイル名をパラメーターとして渡す必要がありますか?

6 Answer


2


これを行う最も簡単な方法は、「変換」スクリプトコンポーネントを作成し、コードを使用して引用符を取り除くことです。


1


「派生列変換」を使用しました

e.g. 派生列を使用してsis内の '、 ""、#を置き換えたい場合は、次のように記述します。

Replace(Replace(REPLACE(name,"$"," "), "'", " ")," ","")

しかし、1列または2列を除外する必要がある場合は、このアプローチが適切だと思います。 さらに多くのことが必要な場合は、「スクリプトタスク」に進みます


1


ファイルのすべてのフィールドに対して実行する必要があるため、変換ワークフローの操作としてではなく、プロセスの最初のステップとして実行することをお勧めします。

独自の.NETスクリプトをコーディングして、スクリプトタスクに埋め込むことができます。 プロセス実行タスクを介してサードパーティのツールまたはコンポーネントを呼び出すこともできます。

たとえば、cygwin unixコマンドラインにアクセスできる場合、次のように動作します。

sed s/\"//g data1.txt

前述の「プロセスタスクの実行」コンポーネントを介して実行可能ファイルを呼び出すことができ、コンポーネントの属性に式を設定することにより、その入力をパラメータ化できます。 これらの式は、構成ファイルを介して構成される可能性のある入力変数に基づくことができます。 (これは、SSISがこのようなことを実現するために提供する多くの方法の1つにすぎません)


0


あなたの質問を正しく理解したら、テキストファイルにある列の値から引用符を削除しますか? この場合、派生列変換を使用します。 [派生列名]ドロップダウンで["column_name"を置換]を選択します。 次に、式プロパティに次のコードを入力します:REPLACE( "\" "、[column_name]、" ")

お役に立てれば。


0


unclepaul84とRyan Fonnettsの両方のソリューションが機能しますが、個人的にはunclepaulの方に進みます。引用符を削除する必要がある複数のファイルがあり、すべてに同じ変換コードを使用できることがわかっているためです(これは素晴らしいことです)。


0


これらは解決策ですが、Flat File Connection Managerには簡単な機能が組み込まれていると思います。

[ver first]タブの[General]には、Format sectinの下にある[Text Qualifier]という最初のテキストボックスがあります。 ここに1つの二重引用符(またはすべての列が単一引用符で囲まれている場合は単一引用符)を入力し、プレビューをクリックします。

これで問題が解決するはずです!