我想使用dblink的等效项来连接rds postgresql和rds mysql表。 dblink本身不适合此处,因为它可用于连接来自两个postgresql实例的表。 说到自托管实例,我倾向于使用mysql_fdw扩展。但是亚马逊不支持。
试图用谷歌搜索并找到
您不能将自己的扩展添加到RDS中,至少不能将其添加到需要超级用户权限的扩展中(例如带有C代码的任何扩展)。这是您为方便管理而接受的缺点之一。 https://dba.stackexchange.com/questions/111477/amazon-rds-postgresql-adding-new-extensions
Amazon支持将rds postgres和rds mysql表连接起来的其他解决方案是什么? 我即将从rds postgres db运行查询(但请告知mb还有其他方法)。
PostgreSQL RDS支持的扩展列表:address_standardizer,address_standardizer_data_us,amcheck,aws_commons,aws_s3,bloom,btree_gin,btree_gist,chkpass,citext,cube,dblink,dict_int,dict_xsyn,earthdistance,fuzzystrmatch,hllplhstore ,intarray,ip4r,isn,log_fdw,ltree,orafce,pageinspect,pgaudit,pgcrypto,pglogical,p灌浆,pgrowlocks,pgstattuple,pg_buffercache,pg_freespacemap,pg_hint_plan,pg_prewarm,pg_repack,pg_likell,pg_stat_statements,pg_pervis,pg_tr ,plpgsql,pltcl,plv8,postgis,postgis_tiger_geocoder,postgis_topology,postgres_fdw,前缀,sslinfo,tablefunc,test_parser,tsearch2,tsm_system_rows,tsm_system_time,unaccent,uuid-ossp。
现在,按照下面的建议,我正在研究http get(已经启用了MySQL数据库以使用API)。 PostgreSQL RDS(Amazon)不支持python扩展,但它支持perl。这就是在python中的样子:
CREATE OR REPLACE FUNCTION get(uri character varying)
RETURNS json AS
$BODY$
import urllib2
data = urllib2.urlopen(uri)
return data.read()
$BODY$
LANGUAGE plpython2u VOLATILE
COST 100;
这就是我认为应该在perl中使用的样子:
CREATE LANGUAGE plperl;
CREATE OR REPLACE FUNCTION get(input_url character varying)
RETURNS json AS
$BODY$
use warnings;
import LWP::Simple;
warn "@INC";
my $url = input_url;
my $content = get($url);
$content =~ s/ /%20/g;
return $content;
$BODY$
LANGUAGE plperl VOLATILE
COST 100;
ALTER FUNCTION get(character varying)
OWNER TO user;
但是当我尝试运行我的perl函数时,它将返回错误:
select get('ipinfo.io/ip');
警告:/ usr / local / lib64 / perl5 / usr / local / share / perl5 / usr / lib64 / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib64 / perl5 / usr / share / perl5。在第5行。
错误:未定义的子例程&main :: get在第7行被调用。 上下文:PL / Perl函数“获取”
**********错误**********
错误:未定义的子例程&main :: get在第7行被调用。 SQL状态:38000 上下文:PL / Perl函数“ get”
请告知。