sql >> データベース >  >> RDS >> Oracle

タイムラインに基づいてあるスキーマから別のスキーマにデータを自動的にコピーする Oracle の手順またはジョブ

    MERGE を使用してみてください 、 where 条件を置き換えて、ロジックに基づいて 360 日より古いレコードを取得できます。 ON 条件は、2 つのテーブルの一致する結合列である必要があります。

    コードに問題がなければ、毎週実行するようにスケジュールできます。

    また、レコードを挿入するために BULK COLLECT を使用することをお勧めします。 merge-vs-bulk-collect/">これ

     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. Oracle関数を呼び出すSpringDataJPA

    2. isqlで完全なエラーメッセージを取得する

    3. SQL Serverの置き換え、特定の文字の後のすべてを削除

    4. PostgreSQLを使用した英数字の並べ替え