PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Salin data antara dua tabel di PostgreSQL menggunakan dblink.sql

Setelah Anda menginstal paket ke dalam sistem Anda seperti yang dijelaskan dalam pertanyaan terkait instal ekstensi dblink ke dalam basis data Anda (yang Anda gunakan untuk menjalankan kode ini, db asing tidak memerlukannya):

CREATE EXTENSION dblink;

Anda dapat menemukan contoh kode di manual .
Berikut adalah versi sederhana dari apa yang saya gunakan untuk menyalin data antara dbs:Pertama, buat SERVER ASING

CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');

FOREIGN DATA WRAPPER postgresql sudah diinstal sebelumnya dalam kasus saya.
Kemudian buat fungsi yang membuka koneksi, menghapus data lama (opsional), mengambil data baru, menjalankan ANALYZE dan menutup koneksi:

CREATE OR REPLACE FUNCTION f_tbl_sync()
  RETURNS text AS
$BODY$
SELECT dblink_connect('mydb');  -- USER MAPPING for postgres, PW in .pgpass

TRUNCATE tbl;  -- optional

INSERT INTO tbl
SELECT * FROM dblink(
  'SELECT tbl_id, x, y
   FROM   tbl
   ORDER  BY tbl_id')
    AS b(
 tbl_id int
,x int
,y int)

ANALYZE tbl;

SELECT dblink_disconnect();
$BODY$
  LANGUAGE sql VOLATILE;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array PHP ke array postgres

  2. Permintaan SQL menggunakan IN dengan daftar sangat lambat

  3. Bagaimana cara kerja COPY dan mengapa ini jauh lebih cepat daripada INSERT?

  4. Beberapa koneksi database di Rails

  5. Postgres baru saja berhenti bekerja secara acak (Rails, PGSQL.5432)