Development/Etc

[Oracle] CLOB 조회 - 매우 긴 문자열

비완 2020. 3. 5. 18:37
반응형

오라클에서는 문자를 저장하는 VARCHAR2가 최대 4000자까지만 지원되어, 그 이상의 데이터는 CLOB에 저장을 하였다.

그런데, 이는 반대로 읽어올때도 문제가 되는데, 읽어올때도 4000자 이상은 읽어오지를 못하였다.
게다가 CLOB에 저장된 데이터는 평범하게 SELECT column 으로는 조회가 모두 되지 않아, 아래와 같이 조회하여야 했다.

 

방법1

SELECT DBMS_LOB.SUBSTR(col1, DBMS_LOB.GETLENGTH(col1)) FROM MyTable

그런데, 이때 col1의 크기가 4000을 넘어가면 또 에러가 발생한다.

위와 같이 방법을 찾아 진행했었는데, 해당 Query의 결과를 Java단에서 정상적으로 읽지를 못하였다.

 

방법2

그래서, Query는 기존 그대로 사용하여 column 정보를 가져오고,

SELECT col1 FROM MyTable

Java단에서 이 가져온 CLOB을 처리하도록 수정하였다.

result = // DB에서 읽어온 Data List
CLOB clob = (CLOB) result.get("col1");
BufferedReader contentReader = new BufferedReader(clob.getCharacterStream());
StringBuffer out = new StringBuffer();
String aux;
while ((aux=contentReader.readLine())!=null) {
    out.append(aux);
    out.append("\n"); 
}
반응형

'Development > Etc' 카테고리의 다른 글

[Oracle] 만나이 구하기  (0) 2024.01.16
[Oracle] 여러 row 하나로 합치기  (0) 2020.03.05
git reset 으로 날린 내용 복구  (0) 2019.11.08
암호화/복호화  (0) 2019.10.21
Table 복사  (0) 2019.09.26