Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ conn = ............. String sql = ""; int t_int = 1; String t_clob = "clob data 한글 입력"; sql = " insert into test_clob (t_int, t_clob)values(?, ?) "; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, t_int); pstmt.setAsciiStream(2, new ByteArrayInputStream(t_clob.getBytes()), t_clob.getBytes().length); int result = pstmt.executeUpdate(); out.print("
result: " + result); sql = " select * from test_clob "; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if( rs.next() ){ do{ InputStream is2 = rs.getAsciiStream(2); StringBuffer sb = new StringBuffer(); if( is2 != null ){ byte[] b = new byte[4096]; for (int n; (n = is2.read(b)) != -1;) { sb.append(new String(b, 0, n)); } } out.print("
int: " + rs.getInt(1) + " | clob: " + sb); }while( rs.next() ); } }catch(Exception e){ out.print("
e: " + e); }
clob
- 인포믹스(informix) clob insert 2010.11.11
- VARCHAR2 컬럼을 CLOB로 바꾸는 방법... 2006.09.18
인포믹스(informix) clob insert
VARCHAR2 컬럼을 CLOB로 바꾸는 방법...
ORACLE VARCHAR2 --> CLOB 로 바꾸는 방법....
-- 옮기기위한 테이블과 옮길 테이블 그리고 중간 단계를 거칠 테이블을 생성한다.
테이블 정보
TEST_TBL : ( 옮기기 위한 테이블) 원본
USERID VARCHAR2(20) ,
CONTENT VARCHAR2(40000)
TEST_TBL_LONG : (CLOB로 바꾸기 위하여 중간에 거치는 테이블)
USERID VARCHAR(20),
CONTENT LONG
TEST_TML_CLOB : (마지막으로 바꿀 테이블)
USERID VARCHAR(20),
CONTENT CLOB
예를 들어 위와 같은 테이블을 만들어 테스트를 해볼수 있다.
일반 VARCHAR2 에서 CLOB로 바로 옮길수는 없다. LONG 형에서 CLOB로 옮길수는 있다.
바로TO_LOB를 쓰면 LONG 에서 CLOB로 바꿀수 있다.
단 , 여기서 바꾸거나, 바뀌는 모든 테이블이 모두 같은 수의 컬럼과 순서를 가지고 있다.
1. 바꾸고 싶은 원본 테이블을 LONG 으로 바꾸어 주어야 한다.
INSERT INTO TEST_TBL_LONG
SELECT USERID , CONTENT FROM TEST_TBL
2. LONG으로 바꾼 테이블을 CLOB로 바꾼다. 이때 TO_LOB를 사용한다.
INSERT INTO TEST_TBL_LONG
SELECT USERID ,TO_LOB(CONTENT) FROM TEST_TBL_LONG
이렇게 하면 비교적 손쉽게 VARCHAR2 를 CLOB로 바꿀수 있다.