dblink等效于连接rds postgres和rds mysql表

时间:2019-05-27 19:38:24

标签: mysql postgresql perl amazon-rds dblink

我想使用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”

请告知。

0 个答案:

没有答案