2016-09-04 2 views
1

Java를 uniVocity-parsers과 같이 사용하여 mysql select into outfile에 의해 생성 된 csv 데이터를 구문 분석하고 싶습니다.uniVocity-parsers를 사용하여 인쇄 할 수없는 문자를 처리하는 방법

이제 인쇄 할 수없는 문자를 처리하는 한 가지 상황이 발생합니다. mysql 테이블에 bit(1) 열이 포함되어 있고 select into outfile을 사용하여 파일에 데이터를 저장하면 bit(1) 열 데이터가 인쇄 할 수없는 문자가된다는 사실을 발견했습니다. 행 데이터를 얻기 위해 uniVocity-parsers을 사용할 때 null 값이 bit(1) 열이됩니다. bit(1) 열의 실제 데이터를 가져올 것으로 예상됩니다. 어떻게해야합니까? 여기

+0

당신의 조각을 제공 할 수 있습니다

settings.setLineSeparatorDetectionEnabled(true); 

희망 :와

settings.getFormat().setLineSeparator("\r\n"); 

또는 자동 감지가 사용 가능 구문 분석하려고하는 CSV가 있으므로 볼 수 있습니까? –

+0

[인쇄 할 수없는 문자가있는 csv 데이터] (http://od0hvfbed.bkt.clouddn.com/data/txt/tab_web_user-unhex-data.txt) – CrazyPig

답변

1

문제는 bit(1) 값이 문자 \u0000\u0001, 모든 값 (모든 문자 <= ' '을 의미) 기본 트림으로 파서로 MySQL에 의해 수출되고 있다는 점이다. 트리밍 프로세스는 각각 01 인 정수어 ' '의 정수 표현이 32 인 동안 및 \u0001을 닦아냅니다.

당신은 단지 값을 트리밍 방지하기 위해 그 파서를 구성해야합니다

settings.trimValues(false); 

또한, 당신이 준 파일이 \r\n 종료 라인을 가지고있다. 당신은 OSX 또는 Linux에서이 구문 분석 경우에 당신은 명시 적으로 행 끝을 정의해야합니다 :이

+0

네, 맞습니다! 나는 소스 코드를 디버깅하여 왜 인쇄 할 수없는 문자가 무시 될지에 대한 답을 찾았습니다! 고마워요! – CrazyPig

관련 문제