Я хотел бы использовать эквивалент dblink для объединения таблиц rds postgresql и rds mysql. Сама dblink здесь не подходит, потому что она работает для объединения таблиц из двух экземпляров postgresql.
Говоря о автономном экземпляре, я бы хотел использовать расширение mysql_fdw. Но это не поддерживается Amazon.
Попробовал гуглить и нашел
Вы не можете добавлять свои собственные расширения в 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, dictistance, hstt, htlthl, htl, rell, hstl, htl, rell, hstre, hll, inst , INTArray, ip4r, ISN, log_fdw, ltree, orafce, pageinspect, pgaudit, pgcrypto, pglogical, pgrouting, pgrowlocks, pgstattuple, pg_buffercache, pg_freespacemap, pg_hint_plan, pg_prewarm, pg_repack, pg_similarity, pg_stat_statements, pg_trgm, pg_visibility, plcoffee, ФАПЧ, plperl , 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"
Пожалуйста, сообщите.