[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 파일이 저장되어 있는지 확인했다.
Reference
이 문제에 관하여([OCI] 레코드통에 있는 여러 JPEG 파일을 Autonomous Database에 BLOB로 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/500InternalServerError/items/59c91f07731caef62e9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)