GaussDB-通用文件访问函数

71 阅读2分钟

GaussDB-通用文件访问函数

通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。

  • pg_ls_dir(dirname text)

    描述:列出目录中的文件。

    返回值类型:setof text

    备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。

    示例:

    | ``` gaussdb=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .gaussdb.conf.swp gaussdb.conf pg_tblspc PG_VERSION gs_ident.conf core server.crt pg_serial pg_twophase gaussdb.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key gs_hba.conf pg_replslot .gs_hba.conf.swp cacert.pem gs_hba.conf.lock global gaussdb.state (32 rows)

    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    
  • pg_read_file(filename text, offset bigint, length bigint)

    描述:返回一个文本文件的内容。

    返回值类型:text

    备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。

    示例:

    | ``` gaussdb=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/testdir/data1/coordinator+ 1500022474 + 8000 + /var/run/FusionInsight + localhost + 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函数结合,这个函数可以用来读取用指定编码的一个文件。

    | ``` gaussdb=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');

    | -------------------------------------------------------------------------------- |
    
    
  • pg_stat_file(filename text)

    描述:返回一个文本文件的状态信息。

    返回值类型:record

    备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法:

    | ``` gaussdb=# SELECT * FROM pg_stat_file('filename');

    | ---------------------------------------------------------- |
    
    | ```
    gaussdb=# SELECT (pg_stat_file('filename')).modification; 
    ``` |
    | ------------------------------------------------------------------ |
    
    示例:
    
    | ```
    gaussdb=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8');              convert_from              --------------------------------------  4881                                +  /srv/BigData/gaussdb/data1/coordinator+  1496308688                          +  25108                               +  /opt/huawei/Bigdata/gaussdb/gaussdb_tmp +  *                                   +   25108001  43352069                 +  (1 row) 
    ``` |
    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    | ```
    gaussdb=# SELECT * FROM pg_stat_file('postmaster.pid');    size |         access         |      modification      |         change          | creation | isdir  ------+------------------------+------------------------+------------------------ +----------+-------   117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08  |          | f (1 row) 
    ``` |
    | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    | ```
    gaussdb=# SELECT (pg_stat_file('postmaster.pid')).modification;       modification       ------------------------  2017-06-01 17:18:08+08 (1 row) 
    ``` |
    | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
    

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…