PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Skopiuj dane między dwiema tabelami w PostgreSQL za pomocą dblink.sql

Po zainstalowaniu pakietu w systemie jak opisano szczegółowo w powiązanym pytaniu zainstaluj rozszerzenie dblink do Twojej bazy danych (w tej, w której uruchamiasz ten kod, obca baza danych nie potrzebuje tego):

CREATE EXTENSION dblink;

W instrukcji znajdziesz przykłady kodu .
Oto prosta wersja tego, czego używam do kopiowania danych między dbs:First, utwórz ZAGRANICZNY SERWER

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

FOREIGN DATA WRAPPER postgresql była preinstalowana w moim przypadku.
Następnie utwórz funkcję, która otwiera połączenie, usuwa stare dane (opcjonalnie), pobiera nowe dane, uruchamia ANALYZE i zamyka połączenie:

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. ClusterControl — zaawansowane zarządzanie kopiami zapasowymi — PostgreSQL

  2. błąd psql do przywracania kopii zapasowej pgsl na cmd

  3. Jak pobrać jeden losowy element z bazy danych w Django/postgreSQL?

  4. Django/Python:Zaktualizuj relację do punktu w ustawieniach.AUTH_USER_MODEL

  5. Używanie rekurencyjnego CTE z Ecto