fio
PostgreSQL文件IO函数包
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_fio | 1.0 | ADMIN | BSD 3-Clause | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5230 | fio | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | pgfincore adminpack file_fdw pageinspect pgstattuple pg_repack pg_rewrite pg_squeeze |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 | 1817161514 | pg_fio | - |
| RPM | PIGSTY | 1.0 | 1817161514 | pg_fio_$v | - |
| DEB | PIGSTY | 1.0 | 1817161514 | postgresql-$v-pg-fio | - |
构建
您可以使用 pig build 命令构建 pg_fio 扩展的 RPM / DEB 包:
pig build pkg pg_fio # 构建 RPM / DEB 包
安装
您可以直接安装 pg_fio 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_fio; # 当前活跃 PG 版本安装
pig ext install -y pg_fio -v 18 # PG 18
pig ext install -y pg_fio -v 17 # PG 17
pig ext install -y pg_fio -v 16 # PG 16
pig ext install -y pg_fio -v 15 # PG 15
pig ext install -y pg_fio -v 14 # PG 14
dnf install -y pg_fio_18 # PG 18
dnf install -y pg_fio_17 # PG 17
dnf install -y pg_fio_16 # PG 16
dnf install -y pg_fio_15 # PG 15
dnf install -y pg_fio_14 # PG 14
apt install -y postgresql-18-pg-fio # PG 18
apt install -y postgresql-17-pg-fio # PG 17
apt install -y postgresql-16-pg-fio # PG 16
apt install -y postgresql-15-pg-fio # PG 15
apt install -y postgresql-14-pg-fio # PG 14
创建扩展:
CREATE EXTENSION fio;
用法
fio 扩展提供可从 SQL 访问的文件系统 I/O 函数,允许直接在 PostgreSQL 中读取、写入和管理文件与目录。
文件操作
-- 读取文件内容(返回 bytea)
SELECT fio_readfile('/etc/hostname');
-- 将内容写入文件
SELECT fio_writefile('/tmp/output.txt', 'Hello World'::bytea);
-- 自动创建目录并覆盖写入
SELECT fio_writefile('/tmp/newdir/output.txt', 'data'::bytea, true, true);
-- 删除文件
SELECT fio_removefile('/tmp/output.txt');
-- 重命名/移动文件
SELECT fio_renamefile('/tmp/old.txt', '/tmp/new.txt');
目录操作
-- 列出目录内容
SELECT fio_readdir('/usr/', '*');
-- 使用模式过滤列出
SELECT fio_readdir('/var/log/', '*.log');
-- 创建目录并设置权限
SELECT fio_mkdir('/tmp/mydir', '0755');
-- 递归创建嵌套目录
SELECT fio_mkdir('/tmp/a/b/c', '0755', true);
-- 更改文件/目录权限
SELECT fio_chmod('/tmp/mydir', '0700');
函数参考
| 函数 | 描述 |
|---|---|
fio_readfile(path) | 以 bytea 形式读取文件内容 |
fio_writefile(path, content, mkdir, overwrite) | 将 bytea 内容写入文件 |
fio_removefile(path) | 删除文件 |
fio_renamefile(old, new) | 重命名或移动文件 |
fio_readdir(path, pattern) | 列出匹配模式的目录条目 |
fio_mkdir(path, mode, recursive) | 创建目录并设置权限 |
fio_chmod(path, mode) | 更改文件/目录权限 |