레이블이 [오라클]인 게시물을 표시합니다. 모든 게시물 표시
레이블이 [오라클]인 게시물을 표시합니다. 모든 게시물 표시

2008년 8월 18일 월요일

JAVA 에서 ORACLE의 CLOB 타입 사용하기

JAVA 에서 ORACLE의 CLOB 타입 사용하기


INSERT시
1. CLOB 타입인 필드의 기본값을 empty_clob() 로 설정합니다.

2. setAutoCommit(false) 를 선언한다.

3. CLOB 타입 필드를 제외한 나머지 필드에 데이터를 저장한다.

4. CLOB 타입 필드에 데이터를 넣는 동안 다른 변경 작업을 막기 위해 LOCK을 건다.

5. CLOB 타입 필드에 데이터를 넣는다.

6. Commit() 한다.

7. setAutoCommit(true) 를 선언한다.


예제 소스 코드


import! java.io.*;
import! java.net.*;
import! java.sql.*;

import! oracle.sql.*;
import! oracle.jdbc.driver.*;

public class ClobTest {
public static void main(String[] argv) {

String drv = "oracle.jdbc.driver.OracleDriver";
String dburl = "jdbc:oracle:thin:@192.168.3.30:1521:GRDB21";
String user = "scott";
String password = "tiger";

Connection conn = null;
Statement st;
ResultSet rs;

try {
Class.forName(drv);
System.out.println("Drive Loading...");
conn = DriverManager.getConnection(dburl, user, password);
System.out.println("Connecting...");
st = conn.createStatement();

// 입력할 텍스트 만들기
StringBuffer sb = new StringBuffer();
String clobTest = "한글 테스트입니다
It is difficult
";
for (int i = 0; i < 300; i++)
sb.append(clobTest);



// 1. CLOB 데이터 입력하기 위해, empty_clob() 생성
try {
st.executeUpdate("insert into test_clob values (''02'', empty_clob())");
} catch (Exception ee) {
ee.printStackTrace(System.out);
}

// 2. setAutoCommit을 false로 꼭 해야 한다.
conn.setAutoCommit(false);


// 3. CLOB column에 대한 lock을 얻는다.
rs = st.executeQuery("select desc2 from test_clob where code = ''02'' for update");
if (rs. next()) {

// 4. 오라클의 함수들을 사용하기 위해 cast 하였다.
CLOB cl = ((OracleResultSet)rs).getCLOB("desc2");

// 스트림을 이용한 값 저장
BufferedWriter writer = new BufferedWriter(cl.getCharacterOutputStream());
writer.write(sb.toString());
writer.close();
}
conn.commit();
conn.setAutoCommit(true);

// 입력한 값 읽어 오기
rs = st.executeQuery("select * from test_clob where code = ''02''");

if (rs.next()) {
String code = rs.getString("code");

// CLOB column에 대한 스트림을 얻는다.
Reader rd = rs.getCharacterStream("desc2");

sb = new StringBuffer();
char[] buf = new char[1024];
int readcnt;
while ((readcnt = rd.read(buf, 0, 1024)) != -1) {
// 스트림으로부터 읽어서 스트링 버퍼에 넣는다.
sb.append(buf, 0, readcnt);
}
rd.close();

System.out.println("code : " + code);
System.out.println("desc2 : " + sb.toString());
}


}
catch (Exception e) {
e.printStackTrace(System.out);
}
}
}

코드 출처 : http://rudaks.co.kr/bbs/view.jsp?seq=379&bbs=db&PageNo=1





UPDATE 시
기본은 Insert 와 동일하나, CLOB 필드 업데이트 전에 CLOB 필드의 내용을 모두 비워줘야 한다.


예제 소스 코드

ex) UPDATE 테이블 SET CLOB필드 = empty_clob() WHERE 조건


SELECT 시
1. CLOB 가 아닌 데이터를 모두 SELECT 한다.

2. CLOB 인 데이터를 SELECT 한다.


예제 소스 코드




--- 우선은 밑의 거 두개를 import! 합니다.

< % @ page import!="oracle.jdbc.driver.*" % >

< % @ page import!="oracle.sql.*" % >



-- clob를 불러올 query를 만든다 .(clob만 select 합니다.)

--조건은 물론 pk이겠지요.



queryclob.append(" select body from r2enjoybbs ");

queryclob.append(" where bbsid = ? ");



--- 가져오는 부분

--- body1에다가 clob의 데이타를 넣는다.

StringBuffer body1 = new StringBuffer();

pstmt2 = con.prepareStatement(queryclob.toString());

pstmt2.setInt(1,bbsid);

rs2 = pstmt2.executeQuery();

if(rs2.next())

{

Reader input = rs2.getCharacterStream(1);

char[] buffer = new char[1024];

int byteRead;

while((byteRead=input.read(buffer,0,1024))!=-1)

{

body1.append(buffer,0,byteRead);

}

input.close();

}

rs2.close();

pstmt2.close();

코드 출처 : http://database.ssarang.net/?inc=read&aid=11196&criteria=oracle&subcrit=&id=&limit=20&keyword=clob+select&page=5


참조 사이트 : http://cafe.daum.net/boilra/5ZZ3/6?docid=1vPt|5ZZ3|6|20080319085849&q=empty_clob()&srchid=CCB1vPt|5ZZ3|6|20080319085849

2008년 7월 23일 수요일

[Oracle]토드에서 Explain Plan 보는 방법.(Toad 버전 8.5)

[Oracle]토드에서 Explain Plan 보는 방법.(Toad 버전 8.5)

☞ 1단계

ORACLE_HOME/rdbms/admin/utlxplan.sql파일을 실행 시킵니다.



☞ 2단계
Toad메뉴 VIEW → Option → Oracle → General 에서

Explan Plan Table명을 PLAN_TABLE으로 수정 합니다.



☞ 3단계
Toad에서 Explain Plan 탭을 선택해서 조회 할 수 있습니다.

참조 사이트 :
http://www.oracleclub.com/article/11093
http://cafe.daum.net/Lovers10/MYx/3?docid=XklB|MYx|3|20060926105933&q=toad%20export&srchid=CCBXklB|MYx|3|20060926105933

[Oracle]중복행제거 쿼리문

[Oracle]중복행제거 쿼리문

DELETE FROM table1 a
WHERE ROWID < (SELECT MAX(ROWID)
FROM table1 b
WHERE a.col1 = b.col1
AND a.col2 = b.col2
AND a.col3 = b.col3
AND a.col4 = b.col4)


참조 사이트 :
http://cafe.daum.net/Lovers10/MYx/3?docid=XklB|MYx|3|20060926105933&q=toad%20export&srchid=CCBXklB|MYx|3|20060926105933

[Oracle]중복데이터 찾기 쿼리문

[Oracle]중복데이터 찾기 쿼리문

select COMP_NO, FEE_GUBUN , LEVY_DATE_YEAR, LEVY_DATE
from TB_FEE_BACKUP
group by COMP_NO, FEE_GUBUN , LEVY_DATE_YEAR, LEVY_DATE
having count(*) > 1
ORDER BY COMP_NO

참조사이트 :
http://cafe.daum.net/Lovers10/MYx/3?docid=XklB|MYx|3|20060926105933&q=toad%20export&srchid=CCBXklB|MYx|3|20060926105933

2008년 7월 22일 화요일

[Oracle]오라클 "CREATE OR REPLACE function ..." 오류시

[Oracle]오라클 "CREATE OR REPLACE function ..." 오류시

참조 사이트 : http://osdir.com/ml/db.postgresql.slony1.general/2006-12/msg00137.html

[Oracle]Data Import / Export

[Oracle]Data Import / Export

1. telnet 52.36.72.148 ->오라클이 있는 unix Server 접속\

2. login : dev1 / pw : dev1

3. cd DB/BAK ls 을 치면 ***.dmp 파일을 확인할 수 있다.

{Import!할때}
4. BAK 디렉토리에서 Import!명령어 (imp) 명령을 친다. imp -> Enter

5.username:cps / password : cps -> Oracle의 접속유저,패스를 친다

{Export할때 - 백업받을때}
6. BAK 디렉토리에서 Export명령어 (exp) 명령을 친다. imp -> Enter

7.username:cps / password : cps -> Oracle의 접속유저,패스를 친다

8.접속되면서 Exprot file:expdat.dmp > prc 를 친다.
(2)U(sers),or(3)T(ables):(2)U > 에서 3을 친다. (테이블단위로 백업받겠다는의미)

9.Export Table data (yes/no) : 에서 yes> 를 친다.
10.Compress extents(yes/no):에서 yes>를 친다.

11.Table(T) or Partition(T:P) to be exproted:(RETURN to quit)> 에서 PRC_TC_CAR 백업받을 테이블명을 친다(테이블명은 대문자)
...
...
...
백업받을 테이블을 진행하고 맨 마지막에 Enter Key를 한번 친다.

그럼 작업 종료

ls 를 치면 prc.dmp라는 백업파일이 형성되어 있다.

백업받은 파일 임포트 방법

unix 에 접속한다.
1.imp Enter
2.UserName : cps / Password:***
3.Import! file :expdat.dmp > 백업받은 파일명 (song_0109) Enter
4.Enter insert buffer size~ > 그냥 엔터
5.List contents of import! file only(yes/no); no> 그량 엔터
6.Ignore create error due to object existence (yes/no):no> Yes Enter
7.Import! grants~ > 그냥엔터
8.Imort Table data~> 그냥엔터
9.Import! entire export file~ > 그냥엔터
username:cps

Enter table(T) or partition(T:P) name or . if dong : 입력할 테이블명(SAP_SALE_HEAD) 을 입력하고 ENTER

...
..
맨 마지막에 그냥 엔터 -> 종료

====================
TOAD에서 데이터 백업 및 INSERT

EXPORT : DATABASE -> EXPORT -> TABLE DATA -> OPTIONS -> TO FILE
*.SQL파일 생성

IMPORT! : SQL EDIT창을 열고 FIEL OPEN -> EXCUTE AS A SCRIPT(실행버튼이미지옆에)



참조사이트 ;
http://cafe.daum.net/Lovers10/MYx/3?docid=XklB|MYx|3|20060926105933&q=toad%20export&srchid=CCBXklB|MYx|3|20060926105933