如何在派生列转换中替换双引号?

时间:2011-06-02 05:21:13

标签: ssis

我有平面文件。我正在使用ssis将数据从平面文件加载到源表。并且其中一列具有以下值:

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

我想要关注列输出:

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

我试图替换派生列。

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

但这不起作用。

3 个答案:

答案 0 :(得分:22)

我认为除了替换字符串中的附加斜杠外,你几乎得到了正确的表达式。以下是可能适合您的表达方式。

表达式#1:删除给定字符串中的所有双引号。

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

表达式#2:用双引号的次替换所有次双引号的出现。

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

这是一个演示表达式#1的例子:

  1. 屏幕截图# 1 显示将由包读取的CSV文件。
  2. 屏幕截图# 2 显示Derived Column transformation内的Data Flow task,它将替换第一列中名为标题的所有双引号。
  3. 屏幕截图# 3 在程序包执行后显示表中的数据。请注意,第二列中的双引号保持原样,因为没有表达式可以替换它们。
  4. 这是一个演示表达式#2的例子:

    1. 此示例将使用与示例1中相同的文件。请参阅屏幕截图# 1
    2. 屏幕截图# 4 显示Derived Column transformation内的Data Flow task将替换所有双引号出现第一列中出现双引号,名为标题
    3. 屏幕截图# 5 在程序包执行后显示表中的数据。请注意,第二列中的双引号保持原样,因为没有表达式可以替换它们。
    4. 希望有所帮助。

      屏幕截图#1:

      1

      屏幕截图#2:

      2

      屏幕截图#3:

      3

      屏幕截图#4:

      4

      屏幕截图#5:

      5

答案 1 :(得分:1)

如果您的其他列没有同样的问题,这可能不起作用,但如果这是您要导入的唯一文本列,或者它们都是这样,您可以将文本标识符更改为两个双引号而不是一。然后SSIS会正确地将它从平面文件中取出来,你不必在以后尝试清理它。

答案 2 :(得分:1)

请在下面找到样本

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