Oracle 테이블스크립트 to Mysql 테이블스크립트로 만드는법 0 1 2,263

by 곰돌이 [2015.03.19 09:49:35]


오라클 테이블을 MySql 테이블에 똑같이 구조만 복사해서 생성하고 싶은데 이런기능이나 툴이 있을까요?

 

그리고 오라클에서 한 테이블에 사용하지않는 컬럼 (null이나 "" 공백값을 가진)을 체크할 수 있는 쿼리가 있을까요?

by 창조의날개 [2015.03.19 11:13:08]

두번째 질문 해결 방법 입니다.


-- 1. 아래 쿼리를 실행 합니다.
SELECT 'SELECT '''||TNAME||''' AS TNM, '''||CNAME||''' AS CNM, COUNT(*) CNT FROM '||TNAME||' WHERE '||CNAME||' IS NULL UNION ALL'
FROM COL
WHERE NULLS = 'NULL'
  --AND TNAME = 'TOAD_PLAN_TABLE'  -- 테스트를 위해 테이블 하나만 넣어볼때
;

-- 2. 쿼리 실행
SELECT *
FROM (
-- 위 1번에서 나온 쿼리를 복사해 넣습니다
-- 가장 아래줄에 UNION ALL을 삭제합니다.
)
WHERE CNT > 0
;

또다른 방법으로 예전에 마농님이 올려주신 쿼리를 참고 했서 만들어 봤습니다.

WITH t AS
(
SELECT /*+ materialize */
       tname, cname
  FROM col
 WHERE tname NOT LIKE 'BIN$%'
)
SELECT tname, cname
  FROM t
 WHERE TO_NUMBER(
       dbms_xmlgen.getxmltype(
       'SELECT COUNT(*) FROM "'||tname||'" WHERE "'||cname||'" IS NULL'
       ).Extract('//text()')
       ) > 0
;

위 두 방법 모두 당연하겠지만 대용량 DB 인경우 DB에 무리를 줄 수 있습니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입