DB2 TO MSSQL 데이터 이관 방법, MSSQL BCP 이용 본문

IT Cafe+/MS-SQL

DB2 TO MSSQL 데이터 이관 방법, MSSQL BCP 이용

고드림 2020. 8. 9. 14:25

DB2 데이터를 MSSQL 2017로 전환하는 방법.

 

사전 준비 작업

MSSQL BCP 를 이용하기 위해 "MsSqlCmdLnUtils.msi" 를 전환 작업을 할 PC에 설치한다.

MsSqlCmdLnUtils.zip
1.48MB

 

데이터 이관 프로세스

 

데이터 전환 순서

1. Create Table - Target DB에 Staging Table  생성. CREATE TABLE dbo.ZMIG_table_name

2. export  - Source DB에서 데이터 추출해서 table_name.txt 파일로 생성

3. export data - table_name.txt 파일 저장 경로

4. clear import table - Target DB에 Staging Table 클리어. TRUNCATE TABLE dbo.ZMIG_table_name

5. import - Target DB Staging Table에 table_name.txt 데이터 로드. MSSQL BCP 이용.

6. check import - Staging Table 로드된 데이터 건수, 날짜 형식 등 확인.

7. migration - Target DB Staging Table 에서 Main Table 로 데이터 이행. CTAS 이용.

8. check migration - Main Table 데이터 건수, 날짜 형식 등 확인

전환 순서대로 만든 작업 폴더 

 


데이터 전환 상세

1. Create Table

  Target DB에 Staging Table 를 생성한다. 테이블 생성 스크립트는 "01.create table" 디렉토리에 저장한다.

  테이블 스키마는 설계 단계에서 작성된 "전화 매핑 정의서"를 참고하여 작성한다.

  파일명은 "CREATE TABLE dbo.ZMIG_table_name.sql" 으로 한다.

2. export 

 Source DB에서 데이터 추출할 때 사용하는 SQL문을 작성한다. SQL문은 table_name.sql 파일로 "02.export" 디렉토리에 저장한다.

 DBeaver 툴을 이용하여 DB2 데이터를 추출한다.

 DBeaver 에서 SQL을 실행한 후

버튼을 클릭하면 아래처럼 Data Transfer 창이 뜬다.

한글깨짐을 방지하기 위해 CSV 형식을 지정하고 다음 버튼 클릭.

 

파일 확장자는 "txt", 구분자는 "^" 로 지정.

 

 

날짜 형식을 한국형 "YYYY-MM-DD HH24:MI:SS" 로 지정하고 Format의 Date는 "yyyy-mm-dd"로 셋팅한다.

export 파일 저장 경로를 정의하고 Ecnoding 을 "ECUKR"로 한다. "ECUKR"로 해야 한글깨짐이 없다

 

최종 확인하고 Start.

 

 

Export 파일을 메모장이나 UltraEdit 등으로 열었을 때 한글이 계속 깨질 경우

파일을 UTF-8에서 ASCII로 형식 변환을 한다.

MSSQL BCP에서 UTF-8을 지원하지 않기 때문이다.

 

 

 

3. export data - table_name.txt 파일 저장 경로

 

4. clear import table

   Target DB Staging Table에 export 한 데이터를 로드하기 전에 기존 데이터를 삭제한다.

   TRUNCATE TABLE dbo.ZMIG_table_name 로 삭제한다.

   삭제하는 SQL 스크립트 파일명은 "TRUNCATE dbo.ZMIG_table_name.sql"으로 한다.

 

5. import

  MSSQL BCP 이용하여 Target DB Staging Table에 export 한 table_name.txt 데이터를 로드한다.

  import 스크립트는 "BCP_ZMIG_table_name.sql"로 한다. 

 

6. check import

  Staging Table에 로드된 데이터 건수, 날짜 형식 등 확인하여 import 작업이 잘 끝났음을 확인한다.

 

7. migration

 Target DB Staging Table 에서 Main Table 로 데이터를 이행한다.

 INSERT INTO db_name.dbo.table_name(column1, column2)

 SELECT column1

           ,column2...

  FROM dbo.ZIMG_table_name 

;

 INSERT SQL 스크립트 명은 "INSERT dbo.table_name.sql" 로 한다. 

 

8. check migration 

 Main Table에 로드된 데이터 건수, 날짜 형식 등 확인하여 migration 작업이 잘 끝났음을 확인한다.

 

 

 

이상으로 현업에서 일한 경험으로 작성해보았습니다.

다음에는 inhouse로 개발한 전환 자동화 프로그램을 소개하겠습니다.

Comments