【译】PostgreSQL PL/Java – 实操(一)

本文详细介绍了如何从源代码安装PL/Java,包括解决libjvm路径问题,以及如何在PostgreSQL中使用PL/Java访问数据库对象。通过示例展示了如何创建Java函数,实现查询数据库并返回结果。
摘要由CSDN通过智能技术生成

尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

最近,我们收到了一些关于 PL/Java 的问题,我发现很难在互联网上搜索到明确的说明。并不是说网上没有优质的信息,但其中大部分信息要么不完整,要么过时,要么令人困惑,我决定创建这个简短的“how-to”并展示如何安装 PL/Java ,以及如何通过几个示例运行 PL/Java。

安装

我将在这里展示如何从源代码安装 PL/Java,因为我的平台没有编译的二进制文件,如果你的平台有来自包管理器的二进制文件,你可以从那里安装,例如使用 YUM 或 APT。另外,请注意,为简单起见,我使用的 PL/Java 没有指定特定的可信用户,而是使用了 Postgres 数据库超级用户。我建议阅读有关用户和权限的文档,在这[1]。

我使用的软件版本如下:

  • PostgreSQL 12.7
  • PL/Java 1.6.2
  • OpenJDK 11
  • Apache Maven 3.6.3

我从“https://github.com/tada/pljava/releases”下载了源码,然后解包并用 maven 编译:

wget https://github.com/tada/pljava/archive/refs/tags/V1_6_2.tar.gz

tar -xf V1_6_2.tar.gz

cd pljava-1_6_2

mvn clean install

java -jar pljava-packaging/target/pljava-pg12.jar

我在这里假设你已经足够了解 maven 并且会使用 mvn 命令。 java -jar pljava-packaging/target/pljava-pg12.jar 会将所需的文件和包复制/安装到 Postgres 文件夹中。 请注意,maven 使用了我的 Postgres 版本并使用该版本创建了 jar 文件:“pljava-pg12.jar”,因此请注意您已经拥有的版本,因为如果您有不同的 Postgres 版本,jar 文件将会不一样!

我现在可以将扩展安装到我将使用的数据库中。我在这个博客里使用的数据库叫 “demo”:

$ psql demo
psql (12.7)
Type "help" for help.

demo=# CREATE EXTENSION pljava;
WARNING: Java virtual machine not yet loaded
DETAIL: libjvm: cannot open shared object file: No such file or directory
HINT: SET pljava.libjvm_location TO the correct path to the jvm library (libjvm.so or jvm.dll, etc.)
ERROR: cannot use PL/Java before successfully completing its setup
HINT: Check the log for messages closely preceding this one, detailing what step of setup failed and what will be needed, probably setting one of the "pljava." configuration variables, to complete the setup. If there is not enough help in the log, try again with different settings for "log_min_messages" or "log_error_verbosity".

不完全是我所期待的,但我得到了一个很好的提示:“HINT: SET pljava.libjvm_location TO the correct path to the jvm library (libjvm.so or jvm.dll, etc.)“。好的,我必须找到我的系统正在使用的 libjvm 来配置 Postgres。我使用 SET 命令在线执行此操作:

demo=# SET pljava.libjvm_location TO '/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-5.fc34.x86_64/lib/server/libjvm.so';
NOTICE: PL/Java loaded
DETAIL: versions:
PL/Java native code (1.6.2)
PL/Java common code (1.6.2)
Built for (PostgreSQL 12.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.1.1 20210531 (Red Hat 11.1.1-3), 64-bit)
Loaded in (PostgreSQL 12.7 on x86_64-pc-lin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值