336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이번에 주소 정보를 가지고 있는 테이블에 있는 정보를 최신 정보로 싹 갈아야 하는 일이 생겼습니다.

그래서 일단 http://www.zipfinder.co.kr/ 여기에서 우편번호 파일을 다운 받습니다.

사이트 좌측에 보시면 사이트메뉴가 있습니다.
여기서 "우편번호원본파일" 메뉴를 선택합니다
























페이지가 이동되면 아래와 같은 화면이 나타납니다. 페이지가 조금 복잡하긴 하지만 잘 보면 쉽게 설명도 되어있고
약간씩 제공되는 파일의 형식이 다른 것 뿐입니다.

왼쪽의 표를 보면 제공되는 파일이  어떠한 주소 형식을 가지고 있는지에 대한 것을 보여줍니다.
맨 첫번째의 주소데이터의 경우 우편번호와, 특별시+광역시+ 도, 시+군+구, 읍+면+동,리, 건물명, 번지+아파트동+호수 등의 데이터를 제공합니다
이렇듯 자기에게 필요한 주소 형식의 데이터 리스트를 가지고 있는 파일을 찾아서 일단 다운받으면 됩니다.

저는 두번째 표가 나타내는 주소형식이 필요했기 때문에 두번째 표에 있는 파일을 다운받았습니다.
(이 표는 DONG 이라는 필드에 읍+면+동+리+건물명이 한번에 들어가있는 형식입니다)





파일을 다운받고 압축을 풀면 왼쪽의 이미지가 같은 파일만 덩그러니 놓여져 있습니다. 그럼 이놈들 어떻게
해야 할까요.





일단 엑셀을 실행하고


오피스에서 파일 불러오기를 실행하고 파일형식을 "모든 파일"로 선택하면 우리가 다운 받은 파일이 보일겁니다. 그럼 파일을 선택합니다


그럼 아래의 이미지처럼 주소 데이터를 불러온 것을 볼 수 있습니다. 각 항목이 열로 이루어져 있는데 이 열들의 순서를 자기에게
필요한 형태로 바꿔주면 됩니다.
저장하실때 맨 첫번째 행의 머리글은 삭제를 해주셔야 합니다. (1행에 보이는 Zipcode, Sido, Gugun 이런 것들)



주소 열 정리가 끝났으면 이제 이 파일을 "다른 이름 저장하기"를 선택하여 파일 형식을 바꾸어 저장합니다. 파일 이름은 어떻게 저장하든
상관은 없고  파일 형식을 "CSV(쉼표로 분리)"를 선택해 주시면 됩니다



자 그럼 오라클 테이블에 주소를 넣기 위한 첫번째 작업은 끝났습니다.
이제 이 주소가 저장되어 있는 CSV파일을 오라클에서 불러들이기 위한 작업을 해보겠습니다.

우선 메모장을 열어서 아래와 같이 입력하고 저장하시면 되는데 이때 파일 형식은 "모든 파일"로 하시고 파일이름에
저장할 "파일이름.ctl" 로 해주시면 됩니다.

LOAD DATA                                      
INFILE 'c:\addr.csv'                     ----- 여기에 주소 파일을 불러올 경로명과 파일명을 입력해줍니다
INTO TABLE SRS_POST INSERT    ----- SRS_POST가 적혀있는 부분에 해당 테이블의 이름을 입력해줍니다
FIELDS terminated by ','                ----- CSV파일에서 각 열들을 구분하는 구분자로 씌여질 문자를 지정해 줍니다
trailing nullcols                             ----- 이 라인이 포함되면 각 열에 있는 데이터가 공백일 경우에도 데이터를 추가합니다.**
(pk_seq,zipcode,sido,gugun,dong,bunji)  ---- 테이블의 열 이름과 필드 이름을 마추어 줍니다.

””trailing nullcols 라인이 추가되면 각 열들이 ","로 구분되어 있는 상황에서 ","뒤에 데이터가 없어도 그것을 공백데이터로 인식하는 것입니다.
예) 서울시, 양천구, 신월동,    은 서울시+양천구+신월동+" " 으로 인식합니다. 

콘솔창을 여신 후  아래의 구문을 입력하고 엔터를 딱 치면 됩니다

sqlldr scott/tiger control=c:\addr.ctl log=c:\addr.log

scott/tiger   ---- 데이터베이스 접속 아이디와 암호를 입력합니다.
control=c:\addr.ctl  ---- 앞전에 만든 ctl확장자를 가진 파일의 경로를 입력합니다.
log=c:\addr.log  ---- 데이터 입력시에 오류가 날 경우 이 파일에 해당 내역이 기록이 됩니다.

정상적으로 데이터 입력 작업이 끝나면 아래와 같이 별 메세지 없이 작업이 종료됩니다


만약 데이터 입력 도중 에러메세지가 나와서 종료가 되었다면 log파일을 확인하시면 무엇으로 인해 오류가 발생하여 작업이 중단되었는지
해당 내역을 확인할 수 있습니다. (log파일은 위에서 sqlldr 시 log= 구문에 입력하였던 파일명으로 저장되어있습니다)



Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이건 뭐 팁이라기보다는 꽁수입니다만...

C#뿐만이 아니고 파일관련 함수가 지원되는 모든 언어에서 다 쓸수 있는것입니다.

엑셀에서 CVS파일을 읽어올수 있는데 CVS파일은 데이터간의 구분을 TAB 문자로 합니다

그러니까   C#에서 저장할때

"ddddddddd" + "\t" +"wwwwwwwwwwwww"  이렇게 한다면
가운데 \t 로 인해 TAB 공백이생기게됩니다.

그리고 파일명을 정할때 확장자를 .xls로 지정해서 저장을 하신다면

완벽한 엑셀파일로 변하게 됩니다  ^^;

실제로 이렇게 하여 파일을 실행하면 엑셀에서 바로 열리게 되고 데이터컬럼간의 구분도

완벽하게 할수 있습니다
Posted by shunman
,