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

0

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

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

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

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

select :'HOST' into v_host;;

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

想法?有什么建议吗?

提前致谢!

profile picture
EXPERTE
gefragt vor 8 Monaten29 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen