Sì, è possibile farlo utilizzando dblink
anche se con considerazioni di prestazioni significative.
L'esempio seguente richiede che l'utente SQL corrente disponga delle autorizzazioni su entrambi i database. Se db2
non si trova nello stesso cluster, sarà necessario sostituire dbname=db2
con la stringa di connessione completa definita nello dblink documentation.
SELECT *
FROM table1 tb1
LEFT JOIN (
SELECT *
FROM dblink('dbname=db2','SELECT id, code FROM table2')
AS tb2(id int, code text);
) AS tb2 ON tb2.column = tb1.column;
Se table2
è molto grande, si potrebbe avere problemi di prestazioni, perché il sub-query di carichi fino l'intero table2
prima di effettuare il join.
fonte
2014-05-21 23:56:27
Non posso, Abbiamo alcuni database pieni di dati e nessuno vuole cambiare nulla:/Se userò questo dblink, posso fare qualcosa del genere: INSERISCI IN DB1.table SELECT * FROM DB2.table; – sennin
Si può certamente farlo se si esegue la query in db1, sth come 'INSERT INTO db1_table (cols ...) SELECT cols ... FROM dblink ('db2', 'SELECT cols ... FROM db2_table')' – araqnid
Ho usato questo 'dblink()' per connetterlo funziona sempre per me – Manwal