2011-06-02 80 views
10

我有平面文件。我從平面文件加載數據到使用ssis.And柱的一個源表具有以下值:如何在派生列轉換中替換雙引號?

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

欲以下列輸出:

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

我試圖在派生列來替換。

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

但這是行不通的。

回答

21

我想你幾乎得到正確的表達式,除了替換字符串中的附加斜槓。以下是可能適合您的表達方式。

表達式#1:刪除給定字符串中的所有雙引號。

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

表達#2:替換所有出現雙引號與出現雙引號的。

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

下面是一個說明表達式#1的例子:

  1. 截圖#示出了將由包讀取的CSV文件。
  2. 屏幕截圖顯示Data Flow task將取代命名爲第一列中的所有雙引號裏面的Derived Column transformation
  3. 屏幕截圖#顯示軟件包執行後表中的數據。請注意,第二列中的雙引號保留原樣,因爲沒有要替換它們的表達式。

下面是一個說明表達式#2的例子:

  1. 這個例子將使用相同的文件作爲實施例1中參考截圖#。
  2. 截圖#示出了Data Flow task將替換所有出現雙引號的與命名爲部首第一列內發生雙引號內的Derived Column transformation
  3. 屏幕截圖#顯示軟件包執行後表中的數據。請注意,第二列中的雙引號保留原樣,因爲沒有要替換它們的表達式。

希望有所幫助。

截圖#1:

1

截圖#2:

2

截圖#3:

3

截圖#4:

4

截圖#5:

5

+0

如果平面文件源連接無法處理文件會怎麼樣?你不會通過第一步,因此不能進行派生列轉換。 – topwik 2011-07-07 21:10:00

1

如果您的其他列沒有相同的問題,但這可能不起作用,但如果這是您要導入的唯一文本列,或者它們都是這樣,則可以將您的文本標識符更改爲兩個雙引號一個。然後,SSIS會正確地將它從平面文件中提取出來,並且您將不必在稍後嘗試清理它。

+0

我已經將文本標識符添加爲雙引號。在文本限定符後面的列看起來像 請考慮這是一個單列 – David 2011-06-02 05:32:41

+0

@David - 啊,我現在明白了。我看到列數據爲兩列數據。感謝您的澄清。 – IAmTimCorey 2011-06-02 05:38:57

1

請找到下面的樣本

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Client_1,"\"",""),"*",""),",",""),"[",""),"]",""),"'",""),"!",""),"/",""),"<>","") 
+10

你一定在開玩笑吧! – 2013-02-11 17:34:06