database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 4035 게시물 읽기
No. 4035
Re: [잡담] PHP4, Oracle 8에서 LOB 타입 사용하기. -> CLOB도 잘됨
작성자
문태준
작성일
2001-05-07 10:08
조회수
6,871

EMPTY_BLOB() -> EMPTY_CLOB()

OCI_B_BLOB -> OCI_B_CLOB

 

이것만 바꾸어주면 CLOB도 잘됩니다.

그런데 이리저리 보면 CLOB에서 한글이 안된다는 경우가 있는데 이에 대해서는 정확히 모르겠군요. (레드햇을 쓰는데 /etc/rc.d/init.d/httpd 에 오라클 환경변수를 설정해서 시작하도록 하고 있습니다. 아파치 환경변수와 관련해서 문제가 생길수도 있거든요.) 저도 Redhat 6.2, Oracle 8i(816), PHP4에서 CLOB으로 지금 테스팅 잘되고 있는데요. 참고로 clob 등 대규모 텍스트 문자열도 context 기능, 8i버전에서는 Intermedia (context) 기능 이용하여 색인을 만들면 검색 속도 죽입니다. 이에 대해서는 오라클 테크니컬 블레틴에 잘 나와있습니다. 거기서 context로 검색하면 웬만한건 다 테스팅 가능합니다. 단지 사용자 정의사전을 추가하려면 윈도우나 솔라리스용에서 사전을 추가하거나 수정해서 리눅스로 옮겨야죠. 저도 이 부분 테스팅중.

 

아래에 blob에서 자료 가져와 clob에 넣는 스크립트 하나 넣어두죠.

php 입니다. 참고로 clob에 텍스트 자료 넣을 경우 ' 를 ''로 바꾸어주어야 입력시 에러가 나지 않습니다. 아래 소스에 주석이 되어 있지요.

(아래는 실행시간이 너무 오래 걸려서 웹에서는 timeout이 나서 쉘상에서 실행시키는 것입니다)

 

 

#!/usr/bin/php4 -q

<?

$sec = 0;

set_time_limit($sec);

 

$lists[start] = time();

 

// 자료 가져올 db 연결

$con = OCILogon("love","love","taejun_db");

$sql = "SELECT id, title, content FROM mylove WHERE paperdate between '01-JAN-95' AND TO_DATE('31-DEC-01') + .99999";

 

$que = OCIParse($con,$sql);

 

$lists[exec] = time();

 

OCIExecute($que,OCI_DEFAULT);

 

// 입력할 db 연결

$oci[con2] = OCILogon("demo","demo","taejun_test");

 

$i=0;

while(OCIFetchInto($que,&$art))

{

// 오라클에서 ' 를 '' 로 바꾸어야 입력시 에러가 나지 않음

$art[1]=ereg_replace("'","''",$art[1]);

$text= $art[2]->load() ;

 

# 새로운 빈 descriptor LOB/FILE (LOB가 default)를 초기화

$clobid = OCINewDescriptor($oci[con2], OCI_D_LOB);

 

# :article 이라는 호스트변수선언

# blob filed에는 EMPTY_BLOB()를 지정하여 먼저 비워 놓는다.

$oci[sql] = "INSERT INTO documents VALUES (seq_inc.NEXTVAL, $art[0],'$art[1]',EMPTY_CLOB()) return text into :article";

$oci[que2] = OCIParse($oci[con2],$oci[sql]);

 

# 선언된 호스트변수와 $lob를 바인딩

OCIBindByName($oci[que2],":article",&$clobid,-1,OCI_B_CLOB);

 

OCIExecute($oci[que2],OCI_DEFAULT);

# 바인딩 되어진 $lob 변수에 BLOB에 들어갈 내용을 삽입.

$clobid->save($text);

$clobid->free();

OCICommit($oci[con2]);

 

$i +=1;

}

 

// 자료입력한 db 연결 해제

OCIFreeStatement($oci[que2]);

OCILogOff($oci[con2]);

 

// 자료가져온 db 연결 해제

OCIFreeStatement($que);

OCILogoff($con);

 

$lists[end] = time();

 

# db parsing time

$exetime = $lists[exec] - $lists[start];

# db query executed time

$retime = $lists[end] - $lists[exec];

# db sql total time

$sqltime = $lists[end] - $lists[start];

 

echo "$i 건 가져옴.<p>";

echo "<p>

start - parse Time : $exetime 초

exec - end Time : $retime 초

start - end Time : $sqltime 초

";

 

?>

[Top]
No.
제목
작성자
작성일
조회
4031[잡담] 오라클 깔기
firebird
2001-05-07
1648
4037┕>맞어요 텍스트가 더 좋아요. GUI 나쁘~
문태준
2001-05-07 09:40:26
1713
4030[질문] 오라클의 언인스톨
유경문
2001-05-06
1284
4032┕>Re: [질문] 오라클의 언인스톨
firebird
2001-05-07 05:39:42
2070
4042 ┕>Re: Re: [질문] 오라클의 언인스톨
herrchen
2001-05-07 10:48:37
1557
4028갑자기 12546 에러가.....
오라초보
2001-05-06
1721
4027[잡담] PHP4, Oracle 8에서 LOB 타입 사용하기.
정재익
2001-05-06
2425
4035┕>Re: [잡담] PHP4, Oracle 8에서 LOB 타입 사용하기. -&gt; CLOB도 잘됨
문태준
2001-05-07 10:08:54
6871
4267 ┕>text파일을 clob데이터형으로 DB에 저장하는 법 [2]
허충구
2001-05-14 17:23:22
6589
4024remote에있는table를local에trigger거는것은...
윤동만
2001-05-06
1203
4026┕>Re: remote에있는table를local에trigger거는것은...
firebird
2001-05-06 05:18:35
1588
4029 ┕>Re: Re: remote에있는table를local에trigger거는것은...
윤동만
2001-05-06 19:15:12
1503
4021같은 문제의 세번째 질문입니다.
이종범
2001-05-05
1223
4022┕>Re: 같은 문제의 세번째 질문입니다.
firebird
2001-05-06 01:58:53
1828
4041┕>Re: 같은 문제의 세번째 질문입니다.
herrchen
2001-05-07 10:34:00
1595
4015아래 질문 추가
이종범
2001-05-05
40865
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다