viernes, 23 de mayo de 2014

SQLLOADER DE BASE A BASE???

Me encuentro trabajando para un cliente en el que debemos migrar una data desde AS400 hacia ORACLE 11g..... jijiji , actualmente se hace un pl para hacer el insert y manejar los errores, pues la cosa no deberia aser asi!!!!

les dejo como hacer un sql loader de base a base, para lo cual se creo un DBLINK (pero ese es otro tema)

Paso 1) creamos la tabla que poblaremos con los registros probenientes de la tabla a migrar
             
paso 2)  haremos un pequenio bloque anonimo PL en el cual se crea una tabla donde se manejan los errores
      
        BEGIN
          DBMS_ERRLOG.CREATE_ERROR_LOG( ' <nombre de la tabla> ' ) ;
        END;

        Esta acción crea otra tabla con el acronimo ERR$_<nombre de la tabla>

paso 3)  posteriormente procedemos a realizar un insert into \
  

INSERT INTO <tabla destino> (campo1    ,
                                                   campo2        ,
                                                   campo3    ,
                                                   campo4    ,
                                                   campo5      )
                                   SELECT    campo1    ,
                                                   campo2        ,
                                                   campo3    ,
                                                   campo4    ,
                                                   campo5  
    FROM   <tabla origen>@<nombre del dblink>
       where      campo1   = parametro1
            and     campo2   = parametro2
            and     campo3   = parametro3
    LOG ERRORS REJECT LIMIT UNLIMITED;

paso 4) para comprobar si existieron errores deben hacer un select a la tabla creada en el paso 2
     
            SELECT * FROM ERR$_<nombre de la tabla>; 


PASO 5) HAY ME CUENTAN COMO LES FUE...