PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sao chép dữ liệu giữa hai bảng trong PostgreSQL bằng dblink.sql

Sau khi bạn đã cài đặt gói vào hệ thống của mình, hãy chi tiết trong câu hỏi liên quan cài đặt tiện ích mở rộng dblink vào cơ sở dữ liệu của bạn (cái mà bạn đang chạy mã này, db nước ngoài không cần nó):

CREATE EXTENSION dblink;

Bạn có thể tìm thấy ví dụ về mã trong sách hướng dẫn .
Đây là phiên bản đơn giản của những gì tôi sử dụng để sao chép dữ liệu giữa các dbs:Đầu tiên, tạo MÁY CHỦ NƯỚC NGOÀI

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

FOREIGN DATA WRAPPER postgresql đã được cài đặt sẵn trong trường hợp của tôi.
Sau đó, tạo chức năng mở kết nối, xóa dữ liệu cũ (tùy chọn), tìm nạp dữ liệu mới, chạy ANALYZE và đóng kết nối:

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. Phương pháp hay nhất về xử lý quan hệ giữa các bảng trong Spring Data R2dbc

  2. Postgres CSV COPY từ / nhập không tôn trọng tiêu đề CSV

  3. Hiển thị Tổng số Hàng tháng từ Nhiều Cột trong PostgreSQL

  4. Thiết lập sao chép Slony-I đơn giản.

  5. Tham gia truy vấn chỉ với các cột có tất cả các giá trị trong mệnh đề `in`