Buscar en el Blog

viernes, 2 de agosto de 2013

Cómo eliminar un salto de línea LF(Line feed, '\n', 0x0A, 10 en decimal) en los datos de una columna de PostgreSQL

Muchas veces nos encontramos con columnas de tipo de dato VARCHAR con valores que poseen saltos de línea (LF - Line Feed). Por ejemplo, supongamos que se tiene la siguiente tabla de base de datos, creada con el siguiente script SQL:

CREATE TABLE TABLA (COLUMNA VARCHAR(128));
INSERT INTO TABLA VALUES ('MAURICIO MURILLO' || CHR(10) || 'ingmmurillo');
COMMIT;
SELECT * FROM TABLA;

Al consultar el registro de la tabla se obtendrá lo siguiente:








Como se puede observar, los datos de la columna COLUMNA contienen un salto de línea representado por /n. Para reemplazar los saltos de línea que se encuentren en la cadena de texto por un espacio en blanco se usa la función regexp_replace como se muestra a continuación:

select columna, regexp_replace(columna, E'[\\n\\r]+', ' ', 'g' ) as columna_nueva from tabla;


El script SQL anterior me permitirá reemplazar los saltos de línea por espacios en blanco.


Cómo generar un TestCase de Mule

Para generar un Test Case de Mule para un proyecto creado a través de un arquetipo de Maven se tiene que realizar lo siguiente:

1) Asegurarnos que en el pom.xml se encuentra la dependencia de JUnit

<dependency>
 <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.9</version>
    <scope>test</scope>
</dependency>

2) Crear una clase en el directorio src/test/java como la siguiente:

package com.blogspot.ingmmurillo.mule.test;

import org.junit.Test;
import org.mule.tck.junit4.FunctionalTestCase;

public class MuleAppFlowTest extends FunctionalTestCase {
    
    @Override
    protected String getConfigResources() {
        return "src/main/app/mule-config.xml";
    }

    @Test
    public void test() {
        try {
            Thread.sleep(4800000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}


3) Ejecutar o hacer debug sobre la clase. Con ésta clase se ejecutará el flujo de mensajería definido en el archivo mule-config.xml

NOTA: Colocar los siguientes parámetros a la JVM para que el TestCase no termine inmediatamente, darle más memoria, ejecutarlo con  la codificación UTF-8 y la configuración regional de en/US.
-Xmx1024m -XX:MaxPermSize=512m -Dmule.test.timeoutSecs=4800000 -Dmule.verbose.exceptions=true  -Duser.country=US -Duser.language=en -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8