예를 들어 다음과 같이 3개의 항목으로 구성된 한줄의 데이터는 이렇게 csv로 표현됩니다.
항목1 : 홍길동
항목2 : 서울시 서초구
항목3 : 사과(줄바꿈)
 복숭아(줄바꿈)
 배
홍길동,서울시 서초구,"사과(줄바꿈)
 복숭아(줄바꿈)
 배"

위에서 보듯이 기본 규칙은 항목간 구분은 쉼표(,) 입니다.

그리고 항목3과 같이 특수한 경우 따옴표(")로 싸서 표현합니다. 위의 경우는 줄바꿈문자가 들어간 경우입니다.

이외에도 따옴표로 항목데이터를 싸줘야 하는 경우는 데이터자체에 따옴표(")나 쉼표(,)가 들어가는 경우입니다. 그리고 데이터로써의 따옴표(")는 따옴표두개("")를 연달아 쓰는 걸로 표현됩니다.

즉 데이터가 다음과 같은 경우 이렇게 표현됩니다.
항목1 : 홍길동
항목2 : 가,나
항목3 : 가"나다라"마
홍길동,"가,나","가""나다라""마"


이러한사실들은 제가 직접 엑셀에서 csv로 저장하기를 통해 알아낸것이며 csv포맷 자체구 국제 규격같은게 없기때문에 다른 내용이 더 있을수도 있습니다.

이번에 *****수집시스템을 개발하면서 대량의 파일데이터를 DB와 주고 받는 작업이 있어서 알아보게 된것입니다.

하여간 이러한 규칙을 적용하여 일반데이터를 csv로 포맷하는 유틸리티를 하나 만들었습니다. 일단 줄바꿈문자가 한개의 항목으로 들어가는 일은 없기때문에 그 부분에 대한 처리는 빠져있구요. 다른 언어를 쓰시는 분들도 간단하니 참고 하시기 바랍니다.

그리고 CSV파일을 일반 데이터로 디코딩하는 부분이 있는데 이부분은 정확히 위의 로직을 반대로 적용하면 됩니다. 말은그런데... 이걸 프로그래밍으로 구현하다보니 인코딩에 비해 훨씬 복잡해 지더군요. 예상보다 상당히 많이.... 그리고 파일을 읽어서 스트림으로 처리하는 로직을 적용했기때문에 소스가 이것보다는 상당히 길구요. 그래서 csv파일 디코딩하는 부분은 다음에 또 올리겠습니다. 물론 소스와 함께...

// java에서 사용법
String converted = CSVUtil.printSCV("홍길동");




Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2011-03-30 19:46:28
Processing time 0.0089 sec