使用postgres函数获取集群名称。

0

【以下的问题经过翻译处理】 我知道这可能更像是一个开发类型的问题,但我还是要问。有没有人想出一种可靠的方法来查询函数内的 aurora postgres 集群的集群名称?

我可以将 :'HOST' psql 变量传递给一个函数并获得所需的结果,但我想将其嵌入到函数本身中。

这就是我将它传递给函数的方式 选择 func_name(:'HOST','value2');

我在函数中尝试了类似下面的方法,但它不起作用。它不喜欢变量开头的那个“:”。

select :'HOST' into v_host;;

我已经看到一些自定义扩展可以完成这项工作,但 Aurora PG 不允许这些自定义扩展。

想法?有什么建议吗?

提前致谢!

profile picture
전문가
질문됨 8달 전29회 조회
1개 답변
0

【以下的回答经过翻译处理】 1. 为了获取连接到的读取器或写入器实例的名称,您可以使用以下命令:(请注意,您必须使用集群端点进行连接以获取群集名称)

[userr@machine]$ psql -h database-3.cluster-xxxxx.region.rds.amazonaws.com -U postgres -d postgres

postgres=> SELECT :'HOST';

database-3.cluster-xxxxx.region.rds.amazonaws.com

-- 上述输出可以进一步删减为仅包含群集名称

postgres=> SELECT SPLIT_PART(:'HOST','.',1);

database-3

-- 要在函数中使用上述变量,可以使用以下解决方法,因为在psql中 ":" 被视为变量。

postgres=>create table host_name_tab (ht varchar); postgres=> insert into host_name_tab select :'HOST';

postgres=> create or replace function get_host() returns varchar language plpgsql as $$ declare host_name varchar; begin SELECT SPLIT_PART(ht,'.',1) into host_name from host_name_tab ; return host_name; end; $$;

postgres=> select get_host(); get_host

database-3 (1 row)

  1. 如果要获取连接到的实例名称,您可以使用以下命令:

postgres=> select aurora_db_instance_identifier() as host_name; host_name

database-3-instance-1-ap-south-1a (1 row)

请注意,由于这是与开发相关的查询,可以使用不同的逻辑来实现。

profile picture
전문가
답변함 8달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인