kettle 使用java脚本连接获取数据库中的值

思路:在kettle中通过设置自定义常数来获取java脚本的值,在kettle的libswt\win64目录下放入用到的含有java.sql中的类的jar包rt.jar,  在 java脚本中像正常java一样写代码连接数据库。可惜这样查询到的结果会将之前的结果给覆盖,需要再做处理。


整的流程:

自定义常量数据:

java代码:import java.sql.*;


public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}


    if (first)
    {
        first = false;
    }


    String urlString = get(Fields.In, "urlString").getString(r);
    String driverName = get(Fields.In, "driverName").getString(r);
    String usernameString = get(Fields.In, "usernameString").getString(r);
    String passwString = get(Fields.In, "passwString").getString(r);
    PreparedStatement pst = null;
    ResultSet rs = null;
    try {
Class.forName(driverName);
Connection dbconConnection  = DriverManager.getConnection(urlString,usernameString,passwString);

String sqlString = "select * from tes";

pst = dbconConnection.prepareStatement(sqlString);

rs = pst.executeQuery();
while (rs.next()) {
String s = rs.getString(1);
String s2 = rs.getString(2);
get(Fields.In, "id").setValue(r, s);
                get(Fields.In, "nm").setValue(r, s2);

}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}




    putRow(data.outputRowMeta, r);


return true;
}

java代码部分截图:

写日志:


kettle里jar包截图:


猜你喜欢

转载自blog.csdn.net/qq_35201754/article/details/78678011