pgpdf
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3570 | pgpdf | 否 | 是 | 是 | 是 | 是 | 是 | - |
| 相关扩展 | pg_search pg_textsearch byteamagic external_file pg_render pg_readme pg_bestmatch vchord_bm25 pg_fts |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.1.0 | 1817161514 | pgpdf | - |
| RPM | PIGSTY | 0.1.0 | 1817161514 | pgpdf_$v | - |
| DEB | PIGSTY | 0.1.0 | 1817161514 | postgresql-$v-pgpdf | - |
构建
您可以使用 pig build 命令构建 pgpdf 扩展的 RPM / DEB 包:
安装
您可以直接安装 pgpdf 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
预加载配置:
创建扩展:
用法
实际的 PDF 解析由 poppler 完成。
该扩展允许以符合 ACID 事务的方式处理 PDF 文件。 常见的替代方案依赖于外部脚本或服务,容易导致数据摄取流程变得脆弱,并使原始数据出现不同步的问题。
下载一些 PDF 文件。
通过将 text 类型的文件路径或 bytea 列进行类型转换,即可创建 pdf 类型。
如果文件系统中没有 PDF 文件,但已将其内容存储在 bytea 列中,可以直接将其转换为 pdf 类型。
示例
创建一个包含 pdf 列的表:
解析和验证会自动进行。 文件只会从磁盘读取一次!
文件路径必须是 postgres 进程/用户可访问的!
这与运行 psql 的用户不同。
如果不确定此处含义,请咨询 DBA!
字符串函数和运算符
标准的 PostgreSQL 字符串函数和运算符均可正常使用:
全文搜索(FTS)
由于 pdf 文件可以像普通文本一样操作,因此也支持全文搜索(FTS)。
使用 pg_trgm 计算文档相似度
可以使用 pg_trgm 计算两个文档之间的相似度:
元数据
以下函数可用:
pdf_title(pdf) → textpdf_author(pdf) → textpdf_num_pages(pdf) → integer文档的总页数
pdf_page(pdf, integer) → text获取第 i 页的文本内容
pdf_creator(pdf) → textpdf_keywords(pdf) → textpdf_metadata(pdf) → textpdf_version(pdf) → textpdf_subject(pdf) → textpdf_creation(pdf) → timestamppdf_modification(pdf) → timestamp
获取部分页面
安装
安装 poppler 依赖
Linux
Homebrew/MacOS
安装完成后,在数据库会话中执行:
Docker
通过以下命令获取 Docker 镜像:
此镜像在 Postgres 镜像 基础上添加了 pgpdf(将 17 替换为所需的 Postgres 服务器版本,运行方式相同)。
在容器中运行该镜像。
通过另一个终端连接到正在运行的服务器(容器)。
将任意二进制数据(PDF)读入数据库可能存在安全风险。 请仅对可信的文件使用此功能。