web-dev-qa-db-ja.com

派生列変換で二重引用符を置き換える方法は?

フラットファイルがあります。 ssisを使用してフラットファイルからソーステーブルにデータを読み込んでいます。列の1つに次の値があります。

<Somecol1 =""1"" col1values= ""223,567,890,653"">

次の列出力が必要です:

<Somecol1 ="1" col1values= "223,567,890,653">

派生列を入れ替えてみました。

REPLACE( COLA, "\"","\")

しかし、これは機能しません。

12
David

置換文字列にスラッシュが追加されていることを除いて、式はほぼ正しいと思います。ここにあなたのために働くかもしれない表現があります。

Expression#1:指定された文字列内のすべての二重引用符を削除します。

REPLACE(COLA, "\"", "")

Expression#2:すべてのdoubleの二重引用符をsingle二重引用符の出現。

REPLACE(COLA, "\"\"", "\"")

次に、式#1の例を示します。

  1. スクリーンショット#1は、パッケージによって読み取られるCSVファイルを示しています。
  2. スクリーンショット#2Derived Column transformation内のData Flow taskを示しています。これは、Header
  3. スクリーンショット#3は、パッケージ実行後のテーブルのデータを示しています。 2番目の列の二重引用符は、それらを置き換える式がないため、そのままになっていることに注意してください。

次に、式#2の例を示します。

  1. この例では、例1と同じファイルを使用します。スクリーンショット#1を参照してください。
  2. スクリーンショット#4は、すべてを置き換えるDerived Column transformation内のData Flow taskを示していますdoublesingleという二重引用符の出現(という名前の最初の列内の二重引用符の出現)Header
  3. スクリーンショット#5は、パッケージ実行後のテーブルのデータを示しています。 2番目の列の二重引用符は、それらを置き換える式がないため、そのままになっていることに注意してください。

お役に立てば幸いです。

スクリーンショット#1:

1

スクリーンショット#2:

2

スクリーンショット#3:

3

スクリーンショット#4:

4

スクリーンショット#5:

5

25
user756519

他の列にこれと同じ問題がない場合、これは機能しない可能性がありますが、これがインポートする唯一のテキスト列であるか、すべてがこのようなものである場合、テキスト識別子を1つではなく2つの二重引用符に変更できます。その後、SSISはそれをフラットファイルから正しく取り出し、後でクリーンアップしようとする必要はありません。

1
IAmTimCorey

以下のサンプルを見つけてください

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Client_1,"\"",""),"*",""),",",""),"[",""),"]",""),"'",""),"!",""),"/",""),"<>","")
1
Dinesh