2011-06-02 30 views
10

Tengo un archivo plano. Estoy cargando los datos de archivo plano de tabla de origen utilizando ssis.And uno de la columna ha siguientes valores:¿Cómo reemplazar las comillas dobles en la transformación de columna derivada?

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

QUIERO siguiente salida de la columna:

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

he tratado de sustituir en la columna derivada .

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

pero esto no funciona.

Respuesta

21

Creo que casi tiene la expresión correcta a excepción de la barra adicional en la cadena de reemplazo. Aquí están las expresiones que podrían funcionar para usted.

Expresión # 1: Elimina todas las comillas dobles dentro de una cadena dada.

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

Expresión # 2: reemplaza todas las ocurrencias dobles de comillas dobles con sola ocurrencia de comillas dobles.

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

Aquí es un ejemplo que demuestra la expresión # 1:

  1. Captura de pantalla # 1 muestra el archivo CSV que será leído por un paquete.
  2. Captura de pantalla # 2 muestra el interior de la Derived Column transformationData Flow task que sustituirá todas las comillas dobles dentro de la primera columna nombrada como Cabecera.
  3. Captura de pantalla n.º muestra los datos en la tabla después de la ejecución del paquete. Observe que las comillas dobles en la segunda columna se dejan como están porque no hay expresión para reemplazarlas.

Aquí es un ejemplo que demuestra la expresión # 2:

  1. En este ejemplo se utilizará el mismo archivo como en el ejemplo 1. Consulte pantalla # 1 .
  2. Captura de pantalla # 4 muestra el interior de la Derived Column transformationData Flow task que reemplazará todos los dobles ocurrencias de comillas dobles con sola ocurrencia de comillas dobles dentro de la primera columna nombrada como Cabecera.
  3. Captura de pantalla n.º muestra los datos en la tabla después de la ejecución del paquete. Observe que las comillas dobles en la segunda columna se dejan como están porque no hay expresión para reemplazarlas.

Espero que ayude.

Captura de pantalla # 1:

1

Captura de pantalla # 2:

2

Captura de pantalla # 3:

3

Captura de pantalla # 4:

4

Captura de pantalla # 5:

5

+0

¿Qué ocurre si la conexión de origen del archivo plano no procesa el archivo? no se le pasa el primer paso y, por lo tanto, no puede llegar a la transformación de Columna derivada. – topwik

1

Esto puede no funcionar si sus otras columnas no tienen este mismo problema, pero si esta es la única columna de texto que está importando o todas son así, podría cambiar su identificador de texto para que sea dos comillas dobles de uno. Entonces SSIS lo sacaría del archivo plano correctamente y no tendría que lidiar con tratar de limpiarlo más tarde.

+0

Ya he agregado el identificador de texto como comillas dobles. Después del calificador de texto la columna se ve como considere esto como una sola columna – David

+0

@David - Ahhh, vale, ahora lo entiendo. Estaba viendo los datos de la columna como dos columnas de datos. Gracias por la aclaración. – IAmTimCorey

1

A continuación las muestras

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

¡Tienes que estar bromeando! –

Cuestiones relacionadas