컴퓨터 지식 네트워크 - 컴퓨터 지식 - . net 데이터베이스에서 이진 데이터를 가져와 rtf 파일로 변환하는 방법

. net 데이터베이스에서 이진 데이터를 가져와 rtf 파일로 변환하는 방법

Oracle 의 Blob 필드는 long 필드보다 성능이 훨씬 뛰어나 그림과 같은 이진 데이터를 저장하는 데 사용할 수 있습니다. < P > Blob 필드에 쓰는 것은 다른 유형의 필드에 쓰는 것과는 매우 다릅니다. Blob 자체에는 cursor 가 있기 때문에 cursor 를 사용하여 Blob 을 조작해야 하기 때문에 Blob 에 쓰기 전에 cursor 를 얻어야 합니다. 그러면 blob 의 cursor 를 어떻게 얻을 수 있습니까? < P > 먼저 empty blob 을 삽입해야 합니다. 이렇게 하면 blob 의 cursor 를 만든 다음 이 empty blob 의 cursor 를 select 로 쿼리하여 2 단계 작업으로 blob 의 cursor 를 얻을 수 있습니다. 실제로 blob 데이터를 쓸 수 있습니다

예:

Oracle 시리즈: LOB 대형 객체 처리

는 주로 대용량 데이터를 저장하는 데이터베이스 필드이며 최대 4G 바이트의 구조화되지 않은 데이터를 저장할 수 있습니다.

는 문자 유형 및 이진 파일 유형 LOB 데이터의 저장소를 주로 소개하고 이진 유형 LOB 데이터의 저장소를 별도로 설명합니다.

1, Oracle 의 LOB 데이터 유형 분류

1, 저장된 데이터 유형별로 구분:

① 문자 유형:

CLOB: 많은 수의 1 바이트 문자 데이터를 저장합니다.

NLOB: 고정 너비 멀티바이트 문자 데이터를 저장합니다.

② 이진 유형:

BLOB: 큰 구조화되지 않은 이진 데이터를 저장합니다.

③ 이진 파일 유형:

BFILE: 데이터베이스 외부의 운영 체제 파일에 이진 파일을 저장합니다. 보관 파일 경로입니다.

2, 저장 방식별 분할:

① 내부 테이블스페이스에 저장:

CLOB, NLOB 및 BLOB

② 외부 운영 체제 파일:

BFILE

2, 큰 객체

create tablespace ts5 _ 21

datafile' e: \ Oracle \ ts5 _ 21.dbf'

size 5m;

*/

create tabletlob (

no number (4),

name varchar2 (1),

resume Photo) storeas (

tablespace ts5 _ 21-저장된 테이블스페이스 지정

chunk 6k-블록 크기 지정

disable storage in row)

2, 큰 객체 열 삽입

① 먼저 일반 열 데이터 삽입

② 큰 객체 열이 나타나면 빈 생성자를 삽입합니다.

문자: empty_clob (), empty_nclob()

이진: empty_blob()

이진 파일 유형:;

BFileName 함수:

bfilename ('논리 디렉토리 이름',' 파일 이름'); 데이터 사전은 대문자로 저장되므로

논리 디렉토리 이름은 대문자로만 저장할 수 있습니다. Oracle 은 대소문자를 구분합니다.

만들 때 BFileName 함수 논리 디렉토리를 물리적 경로로 가리키지 않아도 됩니다.

예:

insert into tlob values (1,' gene', empty _ clob (), empty _ blob (), bfill

③ 논리 카탈로그를 물리적 카탈로그와 연결한다. (바이너리 파일 유형인 경우)

CREATE ANY DIRECTORY 권한 부여

Grant CREATE ANY DIRECTORY TO 사용자 이름 WITH ADMIN OPTION;;

논리 및 물리적 디렉토리 연결

로컬

Create Directory 논리 디렉토리 이름 as' 파일의 물리적 디렉토리';

네트워크:

Create Directory 논리 디렉토리 이름 As ‘\\ \ 호스트 이름 (IP)\*** 공유 디렉토리';

예:

directory mydir as' e: \ Oracle';

삽입 예:

insert into tlob values (1,' gene',' clob 큰 객체 열', empty _ blob (), bfilename

3, 큰 객체 데이터 읽기 및 작업: DBMS_LOB 패키지

DBMS_LOB 패키지: 큰 객체 처리 절차 및 함수 포함

/*

insert into tlob values

insert into tlob values (2,' jack',' clob 큰 객체 열', empty _ blob (), bfilename ('mydir')

insert into tlob values(3,'Mary',' 큰 객체 열 clob', empty _ blob (), bfilename ('mydir')

*/

1, 큰 객체 데이터를 읽는 프로세스와 함수

p>①:DBMS_LOB.Read (): LOB 데이터에서 지정된 길이 데이터를 버퍼로 읽는 프로세스입니다.

DBMS_LOB.Read(LOB 데이터, 지정된 길이, 시작 위치, 저장 반환 LOB 유형 값 변수);

예:

Declare

varC clob;

vRStr varchar2(1) :

ln 번호 (4);

Strt number(4);

begin

select resume into varc from tlob where no = 1;

ln := DBMS_LOB.GetLength(varC);

Strt := 1;

DBMS _ lob.read (varc, ln, strt, vrstr);

DBMS _ output.put _ line ('return:' | | vrstr);

End;

②: DBMS _ LOB.substr (): lob 데이터에서 하위 문자열을 추출하는 함수입니다.

DBMS_LOB.SubStr(LOB 데이터, 추출 길이 지정, 추출 시작 위치 지정):

예:

Declare

varC clob;

vRStr varchar2(1) :

ln 번호 (4);

Strt number(4);

begin

select resume into varc from tlob where no = 1;

ln := 4;

Strt := 1;

vrstr: = DBMS _ lob.substr (varc, ln, strt);

DBMS_output.put_line ('결과:' ||vRStr);

End;

③: DBMS _ LOB.instr (): lob 데이터에서 하위 문자열 위치를 찾는 함수입니다.

DBMS_LOB.InStr(LOB 데이터, 하위 문자열);

예:

Declare

varC clob;

vSubStr varchar2(1) :

vRStr varchar2(1) :

ln 번호 (4);

begin

select resume into varc from tlob where no = 1;

vSubStr :=' 큰 객체';

ln: = DBMS _ lob.instr (varc, vsubstr);

DBMS_output.put_line ('위치:' ||ln);

vrstr: = DBMS _ lob.substr (varc, length (vsubstr), ln);

DBMS_output.put_line ('위치' ||ln||' 길이가' ||Length(vSubStr)||' 인 하위 문자열은 다음과 같습니다

End;

④: DBMS _ LOB.getlength (): 지정된 lob 데이터의 길이를 반환하는 함수입니다.

DBMS_LOB.GetLength(LOB 데이터) :

⑤: DBMS _ lob.compare (): 두 개의 큰 객체가 같은지 비교합니다. 반환 값 은 동일하고 -1 은 같지 않습니다.

DBMS_LOB.Compare(LOB 데이터, LOB 데이터);

예:

Declare

varC1 clob;

varC2 clob;

varC3 clob;

ln 번호 (4);

begin

select resume into var C1 from tlob where no = 1;

select resume into var C2 from tlob where no = 2;

select resume into var C3 from tlob where no = 3;

ln: = DBMS _ lob.compare (varc1, varc1);

DBMS_output.put_line ('비교 결과:' ||ln);

ln: = DBMS _ lob.compare (varc2, varc3);

DBMS_output.put_line ('비교 결과:' ||ln);

End;

2, 큰 객체 데이터를 조작하는 과정 < P > 작업은 데이터베이스의 기존 데이터를 변경하며, Updata 잠금을 추가하여 지정된 데이터 열을 잠그고 수정한 후 트랜잭션을 커밋해야 합니다.

p>①:DBMS_LOB.Write (): 지정된 수의 데이터를 LOB 에 기록하는 프로세스입니다.

DBMS_LOB.Write (LOB 쓰기, 쓰기 길이 (LOB 데이터 쓰기 참조), 쓰기 시작 위치 (LOB 쓰기 참조), LOB 데이터 쓰기);

예:

Declare

varC clob;

vWStr varchar2(1) :

vStrt number(4) :

ln 번호 (4);

Begin

vWStr := 'CLOB';

ln: = 길이 (vwstr);

vStrt := 5;

select resume into varc from tlob where no = 1 for update;

DBMS _ lob.write (varc, ln, vstrt, vwstr);

DBMS_output.put_line ('덮어쓰기 결과:' ||varC);

Commit;

End;

②: DBMS _ LOB.append (): 지정된 LOB 데이터를 지정된 lob 데이터에 추가한 후의 프로세스입니다.

DBMS_LOB.Append(LOB 데이터, LOB 데이터);

예:

Declare

varC clob;

vAStr varchar2(1) :

Begin

vAStr :=', 큰 객체 열';

select resume into varc from tlob where no = 1 for update;

DBMS_LOB.Append(varC, vAStr) :

commit;

DBMS_output.put_line ('추가 결과:' ||varC);

End;

③: DBMS _ LOB.erase (): lob 데이터에서 지정된 위치의 일부 데이터를 제거하는 프로세스입니다.

DBMS _ lob.erase (삭제 길이를 지정하는 lob 데이터, 삭제 시작 위치);

예:

Declare

varC clob;

ln 번호 (4);

strt number(4);

Begin

ln := 1;

strt := 5;

select resume into varc from tlob where no = 1 for update;

DBMS_LOB.Erase(varC, ln, strt);

commit;

DBMS_output.put_line ('삭제 결과:' ||varC);

End;

④: DBMS _ LOB.trim (): 첫 번째 lob 데이터에서 lob 데이터를 자릅니다

上篇: 고포르 컴퓨터 라이브 방송 중 컴퓨터 음악 소리가 안나오는 이유는 무엇인가요? 下篇: CD-ROM에는 내장형과 외장형이 있습니다.
관련 내용