使用 bytea 列过滤 postgres 数据
Filtering postgres data using bytea column
我有一个 java 应用程序,可以插入从供应商处收到的库存商品。我捕获产品的条形码图像以及其他信息(名称、价格等……)。我在 PostgreSQL 数据库中保存 bytea 的条形码图像通知。由于我还没有条形码扫描器,我正在拍摄条形码图像的照片并插入如下。
//code extract
File imgFile = new File(barcodeImage.jpg);
FileInputStream fin=new FileInputStream(imgFile);
pstmt2.setBinaryStream(19, fin, (int) imgFile.length()); //inserts into barcodeImage - bytea column
我现在想使用我保存的条形码图像从数据库中检索产品。像 :
select * from stock_item where barcodeImage=***
如何使用 barcodeImage(bytea) 列过滤数据?就像条码扫描器的工作原理一样。
唯一的方法是扫描条码图像并将代码存储为varchar。恕我直言
如果您想在数据库中执行此操作,您需要一个可以从光栅图像(PNG、JPEG 等)中解码条形码的库,并且您需要通过一个 PostgreSQL 函数将其公开过程语言(PL/Python、PL/Perl、C 等)。
我个人建议不要在数据库中这样做。将工作交给外部辅助进程池,每个辅助进程分析一个代码块并使用图像中找到的代码(如果有的话)更新数据库。这为您提供了更多的语言选择,将数据库与条形码解码软件中的任何崩溃隔离开来,等等。
我的第一次搜索找到了 zxing,一个用于条形码解码的 Java 库。所以我可能会将它与 PgJDBC 一起使用来生成一个简单的工作进程,该进程获取条形码图像,对其进行解码,并使用解码后的条形码更新行。如果出于某种原因我真的必须在数据库中执行此操作,我会使用 PL/Java(警告,这里是龙)或找到条形码解码库以获得更好支持的数据库内语言。
尝试按照您在 WHERE
子句中描述的那样去做,将是完全没有希望的。您必须为每个查询中的每个图像解码条形码。完全无法管理。功能索引可以工作,但创建起来会非常昂贵,并且面对条形码库的更新等,维护起来会是一场噩梦。您需要对其进行预处理。
我有一个 java 应用程序,可以插入从供应商处收到的库存商品。我捕获产品的条形码图像以及其他信息(名称、价格等……)。我在 PostgreSQL 数据库中保存 bytea 的条形码图像通知。由于我还没有条形码扫描器,我正在拍摄条形码图像的照片并插入如下。
//code extract
File imgFile = new File(barcodeImage.jpg);
FileInputStream fin=new FileInputStream(imgFile);
pstmt2.setBinaryStream(19, fin, (int) imgFile.length()); //inserts into barcodeImage - bytea column
我现在想使用我保存的条形码图像从数据库中检索产品。像 :
select * from stock_item where barcodeImage=***
如何使用 barcodeImage(bytea) 列过滤数据?就像条码扫描器的工作原理一样。
唯一的方法是扫描条码图像并将代码存储为varchar。恕我直言
如果您想在数据库中执行此操作,您需要一个可以从光栅图像(PNG、JPEG 等)中解码条形码的库,并且您需要通过一个 PostgreSQL 函数将其公开过程语言(PL/Python、PL/Perl、C 等)。
我个人建议不要在数据库中这样做。将工作交给外部辅助进程池,每个辅助进程分析一个代码块并使用图像中找到的代码(如果有的话)更新数据库。这为您提供了更多的语言选择,将数据库与条形码解码软件中的任何崩溃隔离开来,等等。
我的第一次搜索找到了 zxing,一个用于条形码解码的 Java 库。所以我可能会将它与 PgJDBC 一起使用来生成一个简单的工作进程,该进程获取条形码图像,对其进行解码,并使用解码后的条形码更新行。如果出于某种原因我真的必须在数据库中执行此操作,我会使用 PL/Java(警告,这里是龙)或找到条形码解码库以获得更好支持的数据库内语言。
尝试按照您在 WHERE
子句中描述的那样去做,将是完全没有希望的。您必须为每个查询中的每个图像解码条形码。完全无法管理。功能索引可以工作,但创建起来会非常昂贵,并且面对条形码库的更新等,维护起来会是一场噩梦。您需要对其进行预处理。