Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

New Features of CMT 2013.08_kr


1. 데이터 변환시 사용자 정의 클래스 지원

DB에서 지원하지 않는 함수를 적용하거나 별도의 로직을 삽입하여 컬럼별로 데이터를 변경하면서 마이그레이션할 수 있습니다. 사용자 정의 자바 클래스를 아래와 같이 생성합니다. 주의할 점은 public Object convert(Map<String, Object> recordMap, String columnName) 메소드가 꼭 있어야 합니다.

아래 예에서는 com.cubrid.SHA256 클래스에 convert() 메소드를 정의를 했습니다.

 

package com.cubrid;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

public class SHA256 {
    public Object convert(Map<String, Object> recordMap, String columName) {
        String raw = (String) recordMap.get(columName);
        return md5(raw);
    }

    public static String md5(String text) {
        try {
            if (text == null) {
                return "";
            }

            byte[] digest = MessageDigest.getInstance("SHA-256").digest(text.getBytes());
            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < digest.length; i++) {
                sb.append(Integer.toString((digesti & 0xf0) >> 4, 16));
                sb.append(Integer.toString(digesti & 0x0f, 16));
            }

            return sb.toString();
        } catch (NoSuchAlgorithmException nsae) {
            return null;
        }
    }
}

Eclipse의 Export > JAR file에서 정의된 클래스를 jar로 패키징 합니다. 만약, 작성한 클래스가 3rd-party 라이브러리를 사용해야한다면 이들 라이브러리에 포함된 필요한 클래스도 모두 추출해서 포함되어야 하므로 Export > Runnable JAR file를 사용합니다.

3rd-party 라이브러리 사용 예:

main() 메소드를 추가합니다. Eclipse에서 실행 스크립트를 자동 생성하기 위한 용도이며 내용은 비어 있어도 됩니다. 예제에서는 테스트 코드를 넣었습니다. com.cubrid.commonlib.CryptoUtil 클래스를 external 라이브러리에서 import 합니다.

 

package com.cubrid;

import java.util.HashMap;
import java.util.Map;

import com.cubrid.commonlib.CryptoUtil;

public class SHA256 {
    public Object convert(Map<String, Object> recordMap, String columName)
            throws Exception {
        String raw = (String) recordMap.get(columName);
        return CryptoUtil.sha256(raw);
    }

    public static void main(String args[]) throws Exception {
        Map<String, Object> rmap = new HashMap<String, Object>();
        rmap.put("col", "column value");
        String res = (String) new SHA256().convert(rmap, "col");
        System.out.println(res);
    }
}

 

main()을 넣었으므로 Run As > Java Application로 실행해서 Runnable JAR file을 실행할 환경을 구성합니다.

위의 과정으로 SHA256 - cmt-udf-class라는 것이 만들어졌는데, Export > Runnable JAR File 메뉴로 다음처럼 export 합니다.

다음은 위와 같은 절차로 Export된 jar 파일입니다.

 

4단계 객체 맵핑에서 컬럼을 선택해서 "컬럼 데이터 변환 클래스" 항목에 "jar파일명:패키지명.클래스명" 형태로 입력합니다. 아래에서는 sample.jar:com.cubrid.SHA256 으로 입력했습니다.

 

 

2. 실패한 데이터만 다시 마이그레이션

대상으로 온라인 CUBRID 데이터베이스로 선택하고 실패한 데이터가 있을 경우 "마이그레이션 재실행" 버튼을 클릭하면 실패한 데이터만 마이그레이션 할 수 있는 옵션이 출력됩니다. 마이그레이션 툴킷 내부 로그에 저장되어 있는 실패한 데이터를 이용해서 다시 입력을 시도하게 됩니다.

 

 

3. 사소한 UI 개선

3-1. 대상 출력이 파일(csv, sql, CUBRID dump 등)이면 이들 파일이 출력되는 위치를 아래와 같이 보여주면서 클릭시 해당 경로를 바로 열어줍니다.

3-2. 마이그레이션명(실행일시) 빨리 찾기 및 정렬, 마이그레이션 상태 출력을 지원합니다.

comments powered by Disqus
Page info
viewed 1154 times
translations en
Author
posted 8 months ago by
newpcraft
Contributors
updated 8 months ago by
View revisions
tagged
Share this article