sql >> Databáze >  >> RDS >> Oracle

Procedura nebo úloha Oracle pro automatické kopírování dat z jednoho schématu do druhého na základě časové osy

Zkuste použít MERGE , Můžete nahradit podmínku where a získat záznamy, které jsou starší než 360 dní na základě vaší logiky. Podmínka ON by měla být odpovídající spojení sloupců dvou tabulek.

Pokud je kód v pořádku, možná můžete naplánovat spouštění každý týden.

K vkládání záznamů také doporučuji používat BULK COLLECT, podívejte se na toto

 CREATE OR REPLACE PROCEDURE ARCHIVE_DATA
AS
BEGIN
    MERGE
    INTO Schema2.table trg
    USING (
            SELECT
                column1
              , column2
              , column3
            FROM
                Schema1.table
            WHERE
                col_date >= 360
        )
        src
    ON
        (
            trg.column1 = src.column1
        )
    WHEN NOT MATCHED THEN
    INSERT
        (
            column1
          , column2
          , column3
        )
        VALUES
        (
            src.column1
          , src.column2
          , src.column3
        )
    ;

    COMMIT;
END;
/



  1. CHECK CONSTRAINT na více sloupcích

  2. Jak zjistit, která verze Postgres je spuštěna

  3. Jak odstranit úvodní a koncové znaky v MySQL

  4. Oracle SQL – Jak získat odlišné řádky pomocí analytické funkce RANK() nebo DENSE_RANK() nebo ROW_NUMBER()?