Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 如何在派生列转换中替换双引号?_Ssis - Fatal编程技术网

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

Ssis 如何在派生列转换中替换双引号?,ssis,Ssis,我有平锉刀。我正在使用ssis将数据从平面文件加载到源表。其中一列具有以下值: <Somecol1 =""1"" col1values= ""223,567,890,653""> 但是这不起作用。如果您的其他列没有相同的问题,这可能不起作用,但是如果这是您要导入的唯一文本列,或者它们都是这样,您可以将文本标识符更改为两个双引号,而不是一个双引号。然后SSIS会将它正确地从平面文件中取出,您就不必再处理以后试图清理它的问题了。我认为除了替换字符串中的附加斜杠之外,您几乎已经获得了正确

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

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

但是这不起作用。

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

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

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

REPLACE(COLA, "\"", "")
表达式#2:用双引号的单引号替换所有出现的双引号

REPLACE(COLA, "\"\"", "\"")
下面是一个演示表达式#1的示例:

  • 屏幕截图#1显示将由软件包读取的CSV文件
  • 屏幕截图#2显示了
    数据流任务中的
    派生列转换
    ,该转换将替换名为标题的第一列中的所有双引号
  • 屏幕截图#3显示包执行后表中的数据。请注意,第二列中的双引号保持原样,因为没有表达式替换它们
  • 下面是一个演示表达式#2的示例:

  • 此示例将使用与示例1相同的文件。请参阅屏幕截图#1
  • 屏幕截图#4显示了
    数据流任务中的
    派生列转换
    ,该转换将用单引号替换名为标题的第一列中出现的所有双引号
  • 屏幕截图#5显示包执行后表中的数据。请注意,第二列中的双引号保持原样,因为没有表达式替换它们
  • 希望有帮助

    屏幕截图#1:

    截图#2:

    屏幕截图#3:

    屏幕截图#4:

    屏幕截图#5:


    请查看以下样本

    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Client_1,"\"",""),"*",""),",",""),"[",""),"]",""),"'",""),"!",""),"/",""),"<>","")
    
    REPLACE(REPLACE(REPLACE)(REPLACE(REPLACE)(REPLACE(REPLACE(REPLACE)(客户机1、、、、、、、、、、、、、、、、、、、、、、)、、、、、、、、、、、、、、、、、、、、)
    
    < /代码>我已经将文本标识符添加为双引号。在文本限定符之后,列看起来像是单个的。column@David-Ahhh,好的,我现在明白了。我将列数据视为两列数据。感谢您的澄清。如果平面文件源连接无法处理该文件,该怎么办在上,无法通过第一步,因此无法进行派生列转换。如果要在SSRS RDL报告中用空字符串替换双引号,请尝试此操作,它会工作的!
    replace(NAME,chr(34),“”)
    你一定是在开玩笑!
    REPLACE(COLA, "\"\"", "\"")
    
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Client_1,"\"",""),"*",""),",",""),"[",""),"]",""),"'",""),"!",""),"/",""),"<>","")