oracle資料表資料同步公用方法

來源:互聯網
上載者:User

標籤:

 自己寫了個資料同步的方法,兩個資料庫之間的資料同步,自己可以通過調用預存程序,添加作業實現定時同步資料。

CREATE OR REPLACE PROCEDURE Data_sync_Common(tableName in varchar2) is  v_sql             VARCHAR2(20000); --????SQL  pk_col_name       VARCHAR2(800); --主鍵SQL  insert_col_name_A VARCHAR2(20000); --A表欄位  insert_col_name_B VARCHAR2(20000); --B表欄位  update_col_name   VARCHAR2(20000); --更新欄位  dsql              VARCHAR2(20000);  local_col_in      VARCHAR2(20000);  TYPE cur_type IS REF CURSOR;  cur_not_contain_col cur_type;  CURSOR CR1 IS  -- select ‘alter table ‘||table_name||‘ disable constraint ‘||constraint_name as dsql    SELECT table_name, constraint_name      FROM user_constraints     WHERE constraint_type = ‘R‘       AND table_name = upper(tableName);BEGIN  SELECT to_char(WMSYS.WM_CONCAT(‘‘‘‘ || column_name || ‘‘‘‘))    INTO local_col_in    FROM user_tab_cols   WHERE table_name = upper(tableName);  dsql := ‘SELECT * FROM [email protected]_dblink1 WHERE table_name=‘‘‘ ||          upper(tableName) || ‘‘‘ AND column_name not IN(‘ || local_col_in || ‘)‘;  dbms_output.put_line(dsql);  OPEN cur_not_contain_col FOR dsql;  SELECT REPLACE(to_char(WMSYS.WM_CONCAT(‘ AND a.‘ || cu.COLUMN_NAME ||                                         ‘=b.‘ || cu.COLUMN_NAME)),                 ‘,‘,                 ‘‘)    INTO pk_col_name    FROM user_cons_columns cu, user_constraints au   WHERE cu.constraint_name = au.constraint_name     AND au.constraint_type = ‘P‘     AND au.table_name = upper(tableName);  IF (pk_col_name IS NULL) OR (LENGTH(pk_col_name) < 6) THEN    SELECT REPLACE(to_char(WMSYS.WM_CONCAT(‘ and a.‘ || cu.COLUMN_NAME ||                                           ‘=b.‘ || cu.COLUMN_NAME)),                   ‘,‘,                   ‘‘)      INTO pk_col_name      FROM user_cons_columns cu, user_constraints au     WHERE cu.constraint_name = au.constraint_name       AND au.constraint_type = ‘U‘       AND au.table_name = upper(tableName);  END IF;  SELECT to_char(WMSYS.WM_CONCAT(‘b.‘ || column_name))    INTO insert_col_name_B    FROM user_tab_cols   WHERE table_name = upper(tableName);  SELECT to_char(WMSYS.WM_CONCAT(‘a.‘ || column_name))    INTO insert_col_name_A    FROM user_tab_cols   WHERE table_name = upper(tableName);  SELECT to_char(WMSYS.WM_CONCAT(‘a.‘ || column_name || ‘=b.‘ ||                                 column_name))    INTO update_col_name    FROM user_tab_cols   WHERE table_name = upper(tableName)     AND column_name NOT IN         (SELECT cu.COLUMN_NAME            FROM user_cons_columns cu, user_constraints au           WHERE cu.constraint_name = au.constraint_name             AND au.constraint_type = ‘P‘             AND au.table_name = upper(tableName));  v_sql := ‘MERGE INTO ‘ || upper(tableName) || ‘@testjob_dblink1 a USING ‘ || upper(tableName) ||           ‘ b‘ || ‘            ON (‘ || substr(pk_col_name, 6, length(pk_col_name)) || ‘)‘;   dbms_output.put_line(update_col_name);  IF (update_col_name IS NOT NULL) AND (LENGTH(update_col_name) > 0) THEN    v_sql := v_sql || ‘ when matched then        update set ‘ || update_col_name;  END IF;  v_sql := v_sql || ‘           when not matched then           insert (‘ || insert_col_name_A || ‘) values( ‘ ||           insert_col_name_B || ‘)‘;  dbms_output.put_line(v_sql);  EXECUTE immediate(v_sql);  EXCEPTION  WHEN OTHERS THEN  dbms_output.put_line(sqlerrm);END Data_sync_Common;-----------------------------調用上述預存程序CREATE OR REPLACE PROCEDURE DATA_sync isBEGINdata_sync_common(‘TEST_SYNC‘);COMMIT;EXCEPTION   WHEN  OTHERS  THEN     ROLLBACK ;END  DATA_sync;

 

oracle資料表資料同步公用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.