W PostgreSQL, można połączyć do innych baz danych za pomocą dblink
tak:Możliwe jest użycie TYPU PostgreSQL do zdefiniowania tabeli dblink?
SELECT *
FROM dblink (
'dbname=name port=1234 host=host user=user password=password',
'select * from table'
) AS users([insert each column name and its type here]);
Ale to jest dość rozwlekły.
Skróciłem go, używając dblink_connect
i dblink_disconnect
, aby wyodrębnić ciąg połączenia z moich zapytań dblink
. Jednak to nadal pozostawia mnie z ręczną definicją tabeli (tj. [insert each column name and its type here]
).
Zamiast ręcznie definiować tabelę, czy istnieje sposób, w jaki mogę ją zdefiniować za pomocą TYPE
lub czegokolwiek, co mogłoby być ponownie użyte?
W moim przypadku liczba zdalnych tabel, do których muszę się przyłączyć, oraz liczba kolumn, których to dotyczy, powoduje, że moje zapytanie jest ogromne.
Próbowałem coś wzdłuż linii:
SELECT *
FROM dblink (
'myconn',
'select * from table'
) AS users(postgres_pre_defined_type_here);
Ale otrzymałem następujący błąd:
ERROR: a column definition list is required for functions returning "record"
Niestety nie sądzę, istnieje jakikolwiek sposób, aby użyć rodzaju jak liście kolumna rozdzielczości dla funkcji, które zwracają 'RECORD'. –
Rekord może być rzutowany na dobrze znany typ wiersza. Ale zbiór rekordów nie może, AFAIK. –