[OCI] 레코드통에 있는 여러 JPEG 파일을 Autonomous Database에 BLOB로 저장

개시하다
Autonomous Database에서 객체 목록에 저장된 이미지 파일을 BLOB 형식으로 한 번에 읽는 방법을 검증했습니다.
또 이번 검증 절차는 OCI의 자원 우선권을 사용했다.의 문서에서 Autonomous Database 인스턴스에 대한 리소스 선호도를 미리 설정해야 합니다.
1. 개체 스토리지 기기에 JPEG 파일 업로드
이미지스라는 물통을 만들고 JPEG 파일 5개를 올렸다.
이번에는 나의 모든 음반 표지의 사진을 사용했다.
여기.

2. 테이블 준비
JPEG 파일을 저장할 테이블 "image blb table"을 만듭니다.
imgblocb는 BLOB형으로 나열되어 있으며 JPEG 파일을 저장합니다.
CREATE TABLE image_blob_table  (
	id			NUMBER, 
	filename	VARCHAR2(256), 
	imgblob		BLOB
   );
3. 단일 JPEG 파일을 캡처하는 PL/SQL 프로세스 만들기
DBMS의 PL/SQL SDKCLOUD_OCI_OBS_OBJECT_STORAGE.GET_OBJECT 함수를 사용하여 객체 설명통에서 JPEG 파일, 이미지 가져오기blob_테이블 테이블에 삽입할 imgblogb 열에 PL/SQL 프로세스 "load image to blogb"를 만듭니다.
실행할 때 매개 변수로
• 개체가 저장한 명칭 공간
• 개체가 저장한 세그먼트 이름
• 객체 설명 통 안의 JPEG 파일의 파일 이름
· 지역 식별자(ap-tokyo-1, ap-osaka-1 등)
너한테 맡겨.
CREATE OR REPLACE PROCEDURE load_image_to_blob (
	namespace 	IN VARCHAR2,
	bucket_name IN VARCHAR2,
	object_name IN VARCHAR2,
	region_id 	IN VARCHAR2
)
IS
	get_object_response 	DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE_GET_OBJECT_RESPONSE_T;
BEGIN
	DBMS_OUTPUT.PUT_LINE('https://objectstorage.'||region_id||'.oraclecloud.com/n/'||namespace||'/b/'||bucket_name||'/o/'||object_name);

	get_object_response := 	
		DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE.GET_OBJECT(
				namespace_name	=> namespace,
				bucket_name		=> bucket_name,
				object_name		=> object_name,
				region 			=> region_id,
				credential_name => 'OCI$RESOURCE_PRINCIPAL'
		);
		
	INSERT INTO image_blob_table VALUES (
		1,
		object_name,
		get_object_response.response_body
	);
	COMMIT;
END;
/
EXEC 명령어를 통해 읽기image_to_블로그 프로그램을 실행합니다.
EXEC load_image_to_blob('ネームスペース','images','Spinning_Toe-Hold.jpg','ap-tokyo-1')
Database Action, imageblob_테이블 테이블의 내용을 검색해 보십시오.
SELECT * FROM image_blob_table;
기록을 삽입했다.

imgblb 열의 (BLOB) 섹션을 선택하고 연필 마커를 클릭합니다.

이미지 탭을 선택합니다.

JPEG 파일이 imgblocb 열에 저장되어 있는지 확인했습니다.

4. 통 안의 JPEG 파일을 통일적으로 가져오는 PL/SQL 프로세스 만들기
DBMS의 PL/SQL SDKCLOUD_OCI_OBS_OBJECT_STORAGE.LIST_OBJECTS 기능 및 DBMSCLOUD_OCI_OBS_OBJECT_STORAGE.GET_OBJECT 함수를 사용하여 개체 설명통 안의 파일을 일람하고 모든 파일의 이미지를 가져옵니다.blob_테이블 테이블에 삽입할 imgblocb 열에 PL/SQL 프로세스 "load images to blb"를 만듭니다.
실행할 때 매개 변수로
• 개체가 저장한 명칭 공간
• 개체가 저장한 세그먼트 이름
· 지역 식별자(ap-tokyo-1, ap-osaka-1 등)
너한테 맡겨.
CREATE OR REPLACE PROCEDURE load_images_to_blob (
	namespace	IN VARCHAR2,
	bucket_name IN VARCHAR2,
	region_id	IN VARCHAR2
)
IS
	list_object_response	DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE_LIST_OBJECTS_RESPONSE_T;
	get_object_response 	DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE_GET_OBJECT_RESPONSE_T;
	object_name				VARCHAR2(256);
	
BEGIN
	list_object_response := 
		DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE.LIST_OBJECTS(
			namespace_name	=> namespace,
			bucket_name		=> bucket_name,
			region 			=> region_id,
			credential_name => 'OCI$RESOURCE_PRINCIPAL'
		);
	
	DBMS_OUTPUT.PUT_LINE('status code: ' || list_object_response.status_code);
	DBMS_OUTPUT.PUT_LINE('object count: ' || list_object_response.response_body.objects.count);

	for i in 1..list_object_response.response_body.objects.count
	loop
		object_name := list_object_response.response_body.objects(i).name;
		DBMS_OUTPUT.PUT_LINE('https://objectstorage.'||region_id||'.oraclecloud.com/n/'||namespace||'/b/'||bucket_name||'/o/'||object_name);

		get_object_response := 	
			DBMS_CLOUD_OCI_OBS_OBJECT_STORAGE.GET_OBJECT(
					namespace_name	=> namespace,
					bucket_name		=> bucket_name,
					object_name		=> object_name,
					region 			=> region_id,
					credential_name => 'OCI$RESOURCE_PRINCIPAL'
			);
		
		INSERT INTO image_blob_table VALUES (
			i,
			object_name,
			get_object_response.response_body
		);
		
	end loop;
	COMMIT;
END;
/
프로세스를 실행하기 전에 이미지 -blob_테이블 테이블을 비웁니다.
TRUNCATE TABLE image_blob_table;
EXEC 명령어를 통해 읽기images_to_블로그 프로그램을 실행합니다.
EXEC load_images_to_blob('ネームスペース','images','ap-tokyo-1')
Database Action, imageblob_테이블 테이블의 내용을 검색해 보십시오.
SELECT * FROM image_blob_table;
통 안의 파일 수와 마찬가지로 다섯 개의 기록을 삽입했다.

imgblb 열의 (BLOB) 섹션을 선택하고 연필 마커를 클릭합니다.

이미지 탭을 선택합니다.

JPEG 파일이 imgblocb 열에 저장되어 있는지 확인했습니다.

다른 기록도 마찬가지로 확인됐다.




다른 기록에도 JPEG 파일이 저장되어 있는지 확인했다.

좋은 웹페이지 즐겨찾기