2017-08-19 4 views
0

hello guysはscriptaraを使用して、oracleデータベースからdaraをpostgresqlデータベースにコピーしています。私はすることができたが、1つの問題がある.iは、数値である列をコピーしたいと思いますが、私は実際に数値ではない最初のテーブルからコードを持っているかもしれません。助けて 。私が何をしたか、ここで 列の型が数値であるかどうかをテストするscriptella

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd"> 
<etl> 
    <description> 
     test script Pour table article 
    </description> 
    <connection id="in" driver="oracle" 
     url="jdbc:oracle:thin:@localhost:1521:XE" user="test" password="test" /> 



    <connection id="out" driver="postgresql" 
     url="jdbc:postgresql://localhost:5432/testMonoprix2" user="postgres" 
     password="maher" /> 
<query connection-id="in"> 
     SELECT CODE from test.TMP_FOURNISSEUR; 

     <script connection-id="out" if =" code is numeric" > 
      INSERT INTO public.suppliers 
      (code) values 
      (?CODE); 
     </script> 
    </query> 
</etl> 

答えて

0
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd"> 
<etl> 
    <description> 
     test script Pour table article 
    </description> 
    <connection id="in" driver="oracle" 
     url="jdbc:oracle:thin:@localhost:1521:XE" user="IPTECH" password="IPTECH" /> 

    <connection id="out" driver="postgresql" 
     url="jdbc:postgresql://localhost:5432/gemodb" user="postgres" 
     password="maher" /> 

    <connection id="janino" driver="janino" /> 
    <connection id="log" driver="text" /> 
    <query connection-id="in"> 

     SELECT CODEARTICLE,STRUCTURE, DES,TYPEMARK,TYP,IMPLOC,MARQUE,GAMME,TAR 
     FROM IPTECH.TMP_ARTICLE ; 

     <query connection-id="janino"> 
      import java.io.*; 
      import java.lang.*; 
      import org.apache.commons.lang3.StringUtils; 
      import org.apache.commons.lang3.*; 

      Boolean result= false ; 

      Object obj =get("CODEARTICLE"); 
      if (StringUtils.isNumeric(obj.toString())) { 

<!--   System.out.println("ok "); --> 
      result=true ;} 
      else{ 
      result=false ;} 
      set("result", result); 
      next(); 

      <script connection-id="out" if="result"> 

       INSERT INTO public.articles 
       (id, 
       is_enabled,type_marketing,type_tarif,description,gamme,import_local,marque,reference,struct,family_id) 
       values 
       (cast(?CODEARTICLE as bigint) 
       ,'TRUE',?TYPEMARK,?TAR,?DES,?GAMME,?IMPLOC,?MARQUE,?CODEARTICLE,?STRUCTURE,cast(?{STRUCTURE.substring(0, 
       2)} as bigint)); 
      </script> 
     </query> 
    </query> 
</etl> 
関連する問題