Cross database reference (databases are on the same database cluster)

Started by Flower Sunabout 23 years ago7 messagesgeneral
Jump to latest
#1Flower Sun
sun_2002_flower@yahoo.com

Hi, group,

I didn't find a syntax for:

select * from database1.tablename; -- while I am login in database2.

Note: database1 and database2 are on one server (one database cluster).

Thank you!

---------------------------------
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more

#2scott.marlowe
scott.marlowe@ihs.com
In reply to: Flower Sun (#1)
Re: Cross database reference (databases are on the same

On Tue, 8 Apr 2003, Flower Sun wrote:

Hi, group,

I didn't find a syntax for:

select * from database1.tablename; -- while I am login in database2.

Note: database1 and database2 are on one server (one database cluster).

There are two ways to do what you want. One is the use dblink in the
contrib directory, which will let you basically do this.

the other is to move your two databases into one database with seperate
schemas, which is the preferred method and will usually result in much
faster queries.

Note that schema support is relatively new (came out in 7.3) so you might
have to update your postgrsql server to use them, but they are well worth
the effort of upgrading to have.

#3Flower Sun
sun_2002_flower@yahoo.com
In reply to: scott.marlowe (#2)
Re: Cross database reference (databases are on the same database cluster)

Hi, Scott,
Thank you for your reply. Can you give us a sample of using the first method using dblink?
(My postgresql server is 7.2 preinstalled while installing redhat 8.0, I even cannot find the */contrib/* directory you mentioned).
"scott.marlowe" <scott.marlowe@ihs.com> wrote:On Tue, 8 Apr 2003, Flower Sun wrote:

Hi, group,

I didn't find a syntax for:

select * from database1.tablename; -- while I am login in database2.

Note: database1 and database2 are on one server (one database cluster).

There are two ways to do what you want. One is the use dblink in the
contrib directory, which will let you basically do this.

the other is to move your two databases into one database with seperate
schemas, which is the preferred method and will usually result in much
faster queries.

Note that schema support is relatively new (came out in 7.3) so you might
have to update your postgrsql server to use them, but they are well worth
the effort of upgrading to have.

---------------------------------
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more

#4scott.marlowe
scott.marlowe@ihs.com
In reply to: Flower Sun (#3)
Re: Cross database reference (databases are on the same

On Tue, 8 Apr 2003, Flower Sun wrote:

Hi, Scott,
Thank you for your reply. Can you give us a sample of using the first method using dblink?
(My postgresql server is 7.2 preinstalled while installing redhat 8.0, I even cannot find the */contrib/* directory you mentioned).
"scott.marlowe" <scott.marlowe@ihs.com> wrote:On Tue, 8 Apr 2003, Flower Sun wrote:

You may or may not have the contrib directory. While I use redhat, I've
always run Postgresql from a tar.gz build, so I've always had the contrib
directory laying around. I think you could probably just download 7.2.4
and use the contrib directory from there for dblink. It has lots of
examples in it on how to use it in the /contrib/dblink/doc directory.

For example:

select dblink_connect('dbname=template1');
dblink_connect
----------------
OK
(1 row)

test=# select * from dblink('dbname=template1','select proname, prosrc
from pg_proc')
as t1(proname name, prosrc text) where proname like 'bytea%';
proname | prosrc
------------+------------
byteacat | byteacat
byteaeq | byteaeq
bytealt | bytealt
byteale | byteale
byteagt | byteagt
byteage | byteage
byteane | byteane
byteacmp | byteacmp
bytealike | bytealike
byteanlike | byteanlike
byteain | byteain
byteaout | byteaout
(12 rows)

so, it's pretty much a function set that connects to the other database
and lets you pull in data from it.

#5Joe Conway
mail@joeconway.com
In reply to: scott.marlowe (#4)
Re: Cross database reference (databases are on the same

scott.marlowe wrote:

On Tue, 8 Apr 2003, Flower Sun wrote:

Thank you for your reply. Can you give us a sample of using the
first method using dblink? (My postgresql server is 7.2
preinstalled while installing redhat 8.0, I even cannot find the
*/contrib/* directory you mentioned).

on my RH 7.3 server it is /usr/lib/pgsql/contrib

For example:

select dblink_connect('dbname=template1'); dblink_connect

But please note that the syntax Scott shows is from PostgreSQL 7.3 and
greater. Postgres 7.2.x is old, and the version of dblink in it is quite
limited and awkward to use -- I highly recommend updating to PostgreSQL
7.3.2.

Joe

#6Medi Montaseri
medi.montaseri@intransa.com
In reply to: scott.marlowe (#2)
Re: Cross database reference (databases are on the same

But keeping two databases, allows you to have to physical space (data
directory) ...
Sort of a replication benefit...

scott.marlowe wrote:

Show quoted text

On Tue, 8 Apr 2003, Flower Sun wrote:

Hi, group,

I didn't find a syntax for:

select * from database1.tablename; -- while I am login in database2.

Note: database1 and database2 are on one server (one database cluster).

There are two ways to do what you want. One is the use dblink in the
contrib directory, which will let you basically do this.

the other is to move your two databases into one database with seperate
schemas, which is the preferred method and will usually result in much
faster queries.

Note that schema support is relatively new (came out in 7.3) so you might
have to update your postgrsql server to use them, but they are well worth
the effort of upgrading to have.

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

#7scott.marlowe
scott.marlowe@ihs.com
In reply to: Joe Conway (#5)
Re: Cross database reference (databases are on the same

On Tue, 8 Apr 2003, Joe Conway wrote:

scott.marlowe wrote:

For example:

select dblink_connect('dbname=template1'); dblink_connect

But please note that the syntax Scott shows is from PostgreSQL 7.3 and
greater. Postgres 7.2.x is old, and the version of dblink in it is quite
limited and awkward to use -- I highly recommend updating to PostgreSQL
7.3.2.

I second that. Of all the different packages I've ever used, apache and
postgresql are usually the most compelling of all to upgrade. The new
release versions are always more secure, more stable, faster, and easier
to use. I.e. the upgrade always saves me enough time down the line that
it's best to do it as soon as the new version can be tested and installed.

I can't say that about all the packages I have to keep happy on my box.
:-)