Saya akan menebak bahwa jawabannya adalah "tidak" berdasarkan pesan kesalahan di bawah ini (dan hasil Google ini ), tetapi apakah ada pula untuk melakukan kueri basis data menggunakan PostgreSQL?
databaseA=# select * from databaseB.public.someTableName;
ERROR: cross-database references are not implemented:
"databaseB.public.someTableName"
Saya sedang bekerja dengan beberapa data yang dipartisi di dua database meskipun data benar-benar dibagi antara keduanya (kolom userid dalam satu database berasal dari users
tabel di database lain). Saya tidak tahu mengapa ini adalah dua database terpisah, bukan skema, tetapi c'est la vie ...
sumber
postgresql-contrib
sebelumnyadblink
? Ataupostgresql-contrib
termasukdblink
? Dan kemudian permintaan OP akan berfungsi, atau apakah Anda harus menanyakannya secara berbeda?dblink () - mengeksekusi kueri dalam basis data jauh
salah satu contoh yang baik:
Catatan: Saya memberikan informasi ini untuk referensi di masa mendatang. Refrence
sumber
Saya telah mengalami hal ini sebelum sampai pada kesimpulan yang sama tentang pertanyaan lintas basis data seperti Anda. Apa yang akhirnya saya lakukan adalah menggunakan skema untuk membagi ruang tabel dengan cara yang saya bisa menjaga tabel dikelompokkan tetapi masih kueri semuanya.
sumber
Hanya untuk menambahkan sedikit informasi.
FAQ PostgreSQL
sumber
Ya, Anda bisa menggunakan DBlink (postgresql saja) dan DBI-Link (memungkinkan queriers lintas basis data asing) dan TDS_LInk yang memungkinkan kueri dijalankan terhadap server MS SQL.
Saya telah menggunakan DB-Link dan TDS-link sebelumnya dengan sangat sukses.
sumber
Jika kinerja penting dan sebagian besar kueri hanya-baca, saya akan menyarankan untuk mereplikasi data ke database lain. Meskipun ini sepertinya duplikasi data yang tidak dibutuhkan, mungkin membantu jika diperlukan indeks.
Ini dapat dilakukan dengan sederhana pada insert trigger yang pada gilirannya memanggil dblink untuk memperbarui salinan lain. Ada juga opsi replikasi lengkap (seperti Slony) tapi itu di luar topik.
sumber
Jika seseorang membutuhkan contoh yang lebih terlibat tentang cara melakukan kueri basis data, berikut adalah contoh yang membersihkan
databasechangeloglock
tabel di setiap basis data yang memilikinya:sumber
Saya telah memeriksa dan mencoba membuat hubungan kunci asing antara 2 tabel dalam 2 database yang berbeda menggunakan dblink dan postgres_fdw tetapi tanpa hasil.
Setelah membaca umpan balik orang lain ini, misalnya di sini dan di sini dan di beberapa sumber lain sepertinya tidak ada cara untuk melakukan itu saat ini:
The dblink dan postgres_fdw memang memungkinkan seseorang untuk terhubung ke dan permintaan tabel dalam database lain, yang tidak mungkin dengan Postgres standar, tetapi mereka tidak memungkinkan untuk membangun hubungan kunci asing antara tabel dalam database yang berbeda.
sumber