Postgresql解析pgScript变量来删除行

时间:2013-10-15 20:48:00

标签: sql postgresql pgadmin

我正在使用pgScript,我必须提取有关数据库所在服务器的信息。我知道我可以获得IP地址和端口,但我需要服务器的主机名。目前我有:

declare @machineName;
declare @I;
set @I = 0;
create temp table foo (t text);
copy foo from '/etc/hosts';
set @machineName = 
    select * from foo;
print @machineName;
set @machineNameCount = select count(*) from foo;

我回来了:

("127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4")
("::1         localhost localhost.localdomain localhost6 localhost6.localdomain6")
("xx.xx.x.xx  HOSTNAME")

我知道我有三行可以使用,在这种情况下,所以我将使用@machineNameCount在@machineName上运行while循环,我只想删除任何包含“127.0.0.1”或“:”的行:1“在其中,但我无法弄清楚如何解析那些。如果我可以看到一行包含那些我可以删除该行。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以将此bash命令用于包含 127.0.0.1 :: 1 输出文件的放置行

sed -i -e '/127\.0\.0\.1/d' -e '/::1/d' file

答案 1 :(得分:0)

所以我采用了不同的方法,然后查看/ etc中的hosts文件;我拉了文件/ etc / sysconfig / network,专门查看包含'HOSTNAME'的行。

create temp table machineNameTable (col1 text);
copy machineNameTable from '/etc/sysconfig/network';
set @machineName = 
    select * from machineNameTable
    where col1 ilike '%HOSTNAME%';
print @machineName;
drop table machineNameTable;

让我回来:

[PGSCRIPT ] ("HOSTNAME=SERVER_NAME")

希望这可以帮助别人。