0] 테이블 생성
- 기존 테이블에 필드 추가,
- 데이터 형 char(4)-> varchar(5)로 변환 XX 테이블

bcp 구문
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]

1] bcp out 작업
-기본적으로 5백만건의 데이터를 out 받았다.
-데이터 크기가 약 2GB가 os limit이기 때문에 ...^^;

[bcp out 쉘스크립트]
bcp superman..LARGE_T out LARGE_T01.dat
-Usuper1 -Psuper1 -SBOSTON -c -F1 -L5000000 -e LARGE_T.err -t '|'
bcp superman..LARGE_T out LARGE_T02.dat
-Usuper1 -Psuper1 -SBOSTON -c -F5000001 -L10000000 -e LARGE_T.err -t '|'
bcp superman..LARGE_T out LARGE_T03.dat
-Usuper1 -Psuper1 -SBOSTON -c -F10000000 -L15000000 -e LARGE_T.err -t '|'
bcp superman..LARGE_T out LARGE_T04.dat
-Usuper1 -Psuper1 -SBOSTON -c -F15000000 -L20000000 -e LARGE_T.err -t '|'
bcp superman..LARGE_T out LARGE_T05.dat
-Usuper1 -Psuper1 -SBOSTON -c -F20000000 -L25000000 -e LARGE_T.err -t '|'
bcp superman..LARGE_T out LARGE_T06.dat
-Usuper1 -Psuper1 -SBOSTON -c -F25000000 -L30000000 -e LARGE_T.err -t '|'

2] 데이터 조작하여 필드 수정...
SYBASE 12.0.0.7 버전의 ODBC API C++ 클래스 화일을 이용하여
LARGE_T01.dat -> LARGE_T01.out으로 바꾸다.
2개 필드 가지고 새로운 필드

3] bcp in 작업
[bcp in 쉘스크립트]
bcp superman..LARGE_T in LARGE_T01.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'
bcp superman..LARGE_T in LARGE_T02.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'
bcp superman..LARGE_T in LARGE_T03.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'
bcp superman..LARGE_T in LARGE_T04.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'
bcp superman..LARGE_T in LARGE_T05.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'
bcp superman..LARGE_T in LARGE_T06.out
-Usuper1 -Psuper1 -SBOSTON -c -e LARGE_T.err -t '|'

** 경험1] bcp in이나 out 걸린 시간은 거의 동일하다. 단지, 2]번 작업에서 잘못되어
데이터의 truncate가 발생하면 시간이 2배 소요 된다.

** 경험2] 데이터 이행의 첫번째 순서는 기존 데이터의 풀백업이다.

** 경험3]
가장 중요한 점은 업무이해를 통한 작업 수행이다.
그러지 않으면 아무런 의미가 없다.


4] HP UNIX에서 코딩
- 데이터 이행에 관계되는 코딩은 아주 간결하게 코딩했다. 테이블 중에 하나만 에러가 나서
방어용 코딩을 했고, 나머진 그냥 넘어감.
- 그리고, 업무 관련하여 aCC(12.x 버전)로 컴파일 , 소스라인이야 대충 5000줄짜리 3개 화일 과 턱시도 6.5버전 관련하여 c코딩을 c++코딩으로 전환한 것 밖에 없는데...^^;

이런걸 HP C/C++ 12.xx 버전으로 컴파일 했다고 할 수 있을까?
소스가 회사 권리이므로 참 공개하기 애매하네요.

여하튼 갑회사 정보를 유출시킬 수 없어서..
사실은 공개할 정도로 대단한 소스가 아니어서 그렇지만요!! ㅋㅋ

'컴퓨터(InfoTech)' 카테고리의 다른 글

갑자기... Thunderbird v1.0  (0) 2005/03/05
.NET에서 .NET UNIT Framework 사용  (1) 2005/01/17
DB 이행에 관련하여  (0) 2005/01/05
[개발] fork 에 대해  (0) 2004/12/31
웹서버  (0) 2004/12/14
fork 에 대해  (0) 2004/12/13
Posted by iarchitect