测试列类型是否为数字scriptella

时间:2017-08-19 12:56:59

标签: java etl scriptella

你好伙计们正在使用scriptella将dara从oracle数据库复制到postgresql数据库中。我已经能够做但有一个问题。我想复制一个数字列,但我可能有一个初始表中的代码,这不是真正的数字我想测试它是数字,请任何帮助。 在这里我做了什么

<?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>

1 个答案:

答案 0 :(得分: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>