通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有GBase 8c目录和log_directory目录里面的文件可以访问。使用相对路径访问GBase 8c目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。
- pg_ls_dir(dirname text)
描述:列出目录中的文件。
返回值类型:setof text
备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。
示例:
gbase=# SELECT pg_ls_dir('./');
pg_ls_dir
----------------------
global
pg_xlog
pg_clog
pg_csnlog
pg_notify
pg_serial
pg_snapshots
pg_twophase
pg_multixact
base
pg_replslot
pg_tblspc
pg_stat_tmp
pg_llog
pg_errorinfo
undo
pg_logical
pg_location
PG_VERSION
pg_ctl.lock
postgresql.conf.lock
postmaster.pid.lock
mot.conf
gs_gazelle.conf
pg_hba.conf
pg_ident.conf
postgresql.conf.bak
server.crt
server.key
cacert.pem
server.key.cipher
server.key.rand
pg_hba.conf.lock
pg_hba.conf.bak
gaussdb.state
postmaster.opts
gswlm_userinfo.cfg
postgresql.conf
postmaster.pid
(39 rows)
- pg_read_file(filename text, offset bigint, length bigint)
描述:返回一个文本文件的内容。
返回值类型:text
备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。
示例:
gbase=# SELECT pg_read_file('postmaster.pid',0,100);
pg_read_file
-------------------------------------------
7961 +
/home/gbase/project/install/data/dn/dn1_1+
1651723153 +
20008 +
/home/gbase/gbase8c/tmp +
[local_ip] +
2
(1 row)
- pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean])
描述:返回一个二进制文件的内容。
返回值类型:bytea
备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。
SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');
- pg_stat_file(filename text)
描述:返回一个文本文件的状态信息。
返回值类型:record
备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法:
SELECT * FROM pg_stat_file('filename');
SELECT (pg_stat_file('filename')).modification;
示例:
gbase=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8');
convert_from
-------------------------------------------
7961 +
/home/gbase/project/install/data/dn/dn1_1+
1651723153 +
20008 +
/home/gbase/gbase8c/tmp +
[local_ip] +
20008001 1 +
(1 row)
gbase=# SELECT * FROM pg_stat_file('postmaster.pid');
size | access | modification |
change | creation | isdir
------+------------------------+------------------------+---------
---------------+----------+-------
118 | 2022-05-18 11:59:29+08 | 2022-05-05 11:59:13+08 | 2022-05-
05 11:59:13+08 | | f
(1 row)
gbase=# SELECT (pg_stat_file('postmaster.pid')).modification;
modification
------------------------
2022-05-05 11:59:13+08
(1 row)