1

我正在尝试编写一个在 oracle 数据库上运行查询的管道脚本。我有一个奴隶,我在其中安装了 Oracle JDBC 驱动程序 jar。

在主服务器的全局设置中,我将“附加 groovy 类路径”字段设置为从服务器上驱动程序 jar 的路径。

然后我运行了我的管道脚本,到目前为止非常简单:

import groovy.sql.Sql;

node ("sqlplus") {
    stage ("RUN QUERY") {
        def sql = Sql.newInstance("jdbc:oracle:thin:@...", "..", "..", "oracle.jdbc.driver.OracleDriver")
         query = "SELECT count(*) from ..."
         println sql.rows(query)
         sql.close() 
    }
}

这编译,但它失败了“java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver”。

那么,我是否必须重新启动某些东西才能使其正常工作,或者这不会按我预期的方式工作?

4

1 回答 1

1

我忘记了我发布的这个问题,甚至在几个月后发布了一个非常相似的问题:Need a working strategy to execute SQL scripts in Jenkins pipeline script

我在后面的帖子中更彻底地调查了这个问题,我得出的结论是,在管道脚本中以“Java 方式”执行 Sql 查询是不切实际的。唯一合理的替代方案是直接执行数据库命令行客户端(例如“sqlplus”或“mysql”)并将脚本导入其中,或者在 Gradle 构建脚本中编写任务以执行查询。

于 2017-03-20T00:21:12.363 回答