sql >> Databáze >  >> RDS >> PostgreSQL

Zkopírujte data mezi dvěma tabulkami v PostgreSQL pomocí dblink.sql

Po instalaci balíčku do systému jak je podrobně uvedeno v související otázce nainstalovat rozšíření dblink do vaší databáze (ta, ve které tento kód spouštíte, cizí db nepotřebuje):

CREATE EXTENSION dblink;

příklady kódu naleznete v příručce .
Zde je jednoduchá verze toho, co používám ke kopírování dat mezi dbs:Za prvé, vytvořte CIZÍ SERVER

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

FOREIGN DATA WRAPPER postgresql byla v mém případě předinstalována.
Poté vytvořte funkci, která otevře připojení, odstraní stará data (nepovinné), načte nová data, spustí ANALYZE a ukončí spojení:

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. Sečtěte po měsíci a uveďte měsíce do sloupců

  2. Generujte jedinečné AI ID přes více datových tabulek

  3. Co je MySQL:Přehled

  4. pro smazání konkrétního řádku z databáze i html tabulky kliknutím na příslušné tlačítko