miplafrom 대용량 데이터 쿼리 관련
Submitted by kissalot on 화, 07/13/2010 - 19:04
anyframe + miflatform + tomcat 에서 프로젝트를 수행하고 있습니다.
대용량 쿼리의 실행 시간 향상을 위해 MipQueryService의
void search(String queryId, VariableList variableList, int pageIndex,
int pageSize, String dataSetName, PrintWriter writer)
throws Exception;
함수를 사용할려고 하는데 2가지 문제점이 있어 문의드립니다.
첫번째 데이터에 0~100℃와 같은 특수 문자가 들어있을 경우 데이터가 깨지고 반환되는 row의 갯수에도 오류가 나타납니다.
이 문제는 search 함수의 writer.write("CSV:euc-kr\n"); 를 euc-kr -> utf-8 로 바꾸어 직접 RiaQueryService의 search 함수를 실행하여 해결하였습니다.
하지만 RiaQueryService의 search를 써도 " 및 \ 가 들어간 데이터는 ", \를 무시한 채로 miplatform에서 표현되는 문제가 나타나고 있습니다.
답변주시면 감사하겠습니다.


질문 감사드립니다.
MiPQueryService에서 MiPlatform의 CSV방식을 지원하도록 API를 지원하고 있습니다.
먼저 오류에 대해서 지적해 주셔서 감사드립니다.
컬럼 값에 '\n', '\'등이 있을 때를 MiPPrintWriterRowCallbackHandler의
static final String replaceChar(String srcStr) {
String tempStr = srcStr;
tempStr = replaceChars(tempStr, "\"", "\"\"");
tempStr = replaceChars(tempStr, "\n", "\\n");
if (tempStr.indexOf(",") != -1 || tempStr.indexOf("'") != -1)
tempStr = "\"" + tempStr + "\"";
return tempStr;
}
메소드에서 처리 하고 있지만 그 외의 경우에는 처리를 하지 않고 있습니다. 이 부분을 수정 하셔서 사용하시면
사용하시는데 문제는 없을 듯합니다.
현재 Anyframe의 다른 RowCallbackHandler는 사용자가 추가해 Injection할 수 있도록 되어 있지만 MiPPrintWriterRowCallbackHandler의 경우는 그렇게 되어있지 않습니다.
다음 버전에는 MiPPrintWriterRowCallbackHandler도 사용자가 확장해서 사용할 수 있도록 반영하도록 하겠습니다.
소중한 의견 감사드립니다.