From one of PostgreSQL AWS RDS instance, try to access tables of remote RDS instance with below command:
testuser=>select * from dblink('dbname=testrds port=5555
host=testrds.rds.amazonaws.com
user=testuser password=passwd', 'SELECT cust_id, cust_name
from iamesh.customer' ) as cust ( id float, name varchar(50));
ERROR: function dblink(unknown, unknown) does not exist
LINE 1: select * from dblink('dbname=testrds port=5555 host=testrds.
HINT: No function matches the given name and argument types.
You might need to add explicit type casts.
SQL state: 42883
Character: 15
Show current installed extensions:
testuser=> select * from pg_extension; extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition --------+----------+--------------+----------------+------------+-----------+-------------- plpgsql | 10 | 11 | f | 1.0 | | (1 rows)
Show available extensions, dblink extension is available to be installed:
testuser>SELECT * FROM pg_available_extensions order by 1;
name | default_version | installed_version | comment
-------------------------+-----------------+-------------------+----
...
..
dblink |1.2 |
plpgsql |1.0 |1.0
...
..
.
We can see dblink extension is NOT installed yet. To create “dblink” extension:
testuser>create extension dblink; ERROR: permission denied to create extension "dblink" HINT: Must be superuser to create this extension.
Logon as super user, and retry again.
rdsdba=> create extension dblink; CREATE EXTENSION
Try to access remote tables of remote instance again, and it is successful.
testuser=>select * from dblink('dbname=testrds port=5555
host=testrds.rds.amazonaws.com
user=testuser password=passwd', 'SELECT cust_id, cust_name
from iamesh.customer' ) as cust ( id float, name varchar(50));
id | name
------------+-------------------------------------
2001873700 | James Bond
2001873800 | David Lee
...
..
.