从Groovy访问Pentaho数据源

时间:2014-10-30 03:20:42

标签: groovy pentaho

在Pentaho Report Designer(PRD)中,我想通过引用default.properties文件中创建的JNDI,使用Groovy脚本(或EMCAScript脚本)连接到我的数据源。因此,我将创建一个包含JNDI名称的多值列表参数,并根据参数中选择的JNDI连接到数据源。

脚本:

import groovy.sql.Sql
import javax.naming.InitialContext
import javax.sql.DataSource

class SqlClient {

    InitialContext context = new InitialContext()
    DataSource dataSource = context.lookup("OLTP") as DataSource
    def sql = new Sql(dataSource)
    sql.execute("SELECT * FROM Person.User_JNDI")
    TypedTableModel model = new TypedTableModel();   
    while(sql.next())  
    model.addRow(new Object [] {rs.getString(1)});    
    c.close();  
    return model;
}

我收到以下错误: 引起:org.apache.bsf.BSFException:来自Groovy的异常:org.codehaus.groovy.control.MultipleCompilationErrorsException:startup failed: 表达式:11:意外标记:sql @第11行,第5列。        sql.execute(“SELECT * FROM Person.User_JNDI”)

此外,PRD希望脚本返回一个模型,可能与TypedtableModel类有关。

有人能给我一个Groovy脚本的例子吗?

1 个答案:

答案 0 :(得分:0)

假设您填写了default.properties here,您应该可以使用以下内容访问数据源:

import groovy.sql.Sql

import javax.naming.InitialContext
import javax.sql.DataSource

class SqlClient {

    InitialContext context = new InitialContext()
    DataSource dataSource = context.lookup("SampleData") as DataSource
    def sql = new Sql(dataSource)
    sql.execute '''
       select * from ... '''
    ...
}

使用Sql实例。