IT_DBMS/Oracle

[펌] DB 링크로 연결된 테이블 복사하는 insert script 생성

JJun ™ 2009. 8. 25. 16:15

원문 출처 : http://blog.naver.com/cherrie1225/150009204181

 

-------------------------------------------------------------------------------------------------

서로 다른 DB 사이에 DB 링크로 연결된 두 개의 테이블을 SRC 테이블에서 TARGET 테이블로

COPY 하는 INSERT스크립트 생성! SQL 개념은 UNION ALL을 이용해서 명령어를 APPEND하는 방식!

앞이나 뒤에 필요한 SQL COMMAND를 추가할 수 있다.

 

나중에 프로시져로 만들어야겠다.

-------------------------------------------------------------------------------------------------

SELECT 'DELETE ' || TNAME || ';' FROM TAB WHERE TNAME = ' '
UNION ALL


SELECT 'INSERT /*+ append PARALLEL*/ INTO   '|| TNAME || ' (' NAME

FROM TAB

WHERE TNAME = ' '
UNION ALL


SELECT NAME FROM (
    SELECT '          ' ||DECODE(COLUMN_ID,1,'',',')||COLUMN_NAME NAME
    FROM user_tab_columns T1
    WHERE 1=1
    AND TABLE_NAME = ' '
    ORDER BY T1.COLUMN_ID
)
UNION ALL


SELECT ')' NAME FROM DUAL
UNION ALL

SELECT 'SELECT ' NAME FROM DUAL
UNION ALL

SELECT NAME FROM (
    SELECT '          ' ||DECODE(COLUMN_ID,1,'',',')||COLUMN_NAME NAME
    FROM user_tab_columns T1
    WHERE 1=1
    AND TABLE_NAME = ' '
    ORDER BY T1.COLUMN_ID
)
UNION ALL


SELECT 'FROM  '|| TNAME || '@DIMS_REAL;' NAME FROM TAB WHERE TNAME = ' '
UNION ALL


SELECT 'COMMIT;' FROM DUAL

 

-------------------------------------------------------------------------------------------------