读取文件并使用PostgreSql Plperl打印



我想从OS文件系统中读取文件并将其内容打印为表。最可取的方法是使用PLPERL(因为在大多数Postgres安装中不需要使用临时表,并且默认情况下是plperl)。但是不幸的是,我不熟悉Perl,我的功能不起作用。它是读取的文件,但什么也没打印。

您可以检查功能主体,然后说错误在哪里?

    CREATE OR REPLACE FUNCTION public.file_read(text)
  RETURNS table(maj int, min int, dev text, reads bigint, rmerges bigint, rsects bigint, rspent bigint, writes bigint, wmerges bigint, wsects bigint, wspent bigint, inprog bigint, spent bigint, weighted bigint) AS
  $$
    open (datfile, $_[0]);
    while ($line = <$datfile>) {
      chomp $line;
      @line = split(/s+/, $line);
      return_next({maj => $line[0], min => $line[1], dev => $line[2],
                   reads => $line[3], rmerges => $line[4], rsects => $line[5], rspent => $line[6],
                   writes => $line[7], wmerges => $line[8], wsects => $line[9], wspent => $line[10],
                   inprog => $line[11], spent => $line[12], weighted => $line[13]
                  });
    }
    close (datfile);
    return undef;
  $$ LANGUAGE plperlu;
# select * from file_read('/proc/diskstats');
 maj | min | dev | reads | rmerges | rsects | rspent | writes | wmerges | wsects | wspent | inprog | spent | weighted 
-----+-----+-----+-------+---------+--------+--------+--------+---------+--------+--------+--------+-------+----------
(0 rows)

谢谢!

问题使用pavelstěhule的函数示例完全解决,此处描述了。

相关内容

  • 没有找到相关文章