Object Storage의 JSON 파일을 Autonomous Database에서 외부 테이블로 액세스 할 때의 메모
이 기사에서 설명하는 것
Object Storage의 JSON 파일을 Autonomous Database에서 외부 테이블로 액세스할 때의 절차 메모를 제공합니다.
필요한 절차는 다음과 같습니다.
전제
다음을 전제로 합니다.
- Autonomous Database(ADB)가 배포됨
- Object Storage 버킷이 생성되었습니다.
환경
Object Storage에 넣을 JSON 파일
{"name" : "Blake", "job" : "Intern", "salary" : 30000}
{"name" : "Smith", "job" : "Programmer", "salary" : 80000}
{"name" : "Miller", "job" : "Programmer", "salary" : 90000}
{"name" : "Clark", "job" : "Manager", "salary" : 100000}
{"name" : "King", "job" : "President", "salary" : 200000, "email" : "[email protected]"}
위의 JSON 파일을 2차원 테이블로 액세스하기 위한 테이블(View)
CREATE OR REPLACE FORCE EDITIONABLE VIEW "ADMIN"."V_EMP_JSON_EXT" (
"job",
"name",
"email",
"salary"
) DEFAULT COLLATION "USING_NLS_COMP" AS
SELECT
JT."job",
JT."name",
JT."email",
JT."salary"
FROM
"ADMIN"."EMP_JSON_EXT" RT,
JSON_TABLE ( "JSON_DOCUMENT", '$[*]'
COLUMNS
"job" VARCHAR2 ( 16 ) PATH '$.job',
"name" VARCHAR2 ( 8 ) PATH '$.name',
"email" VARCHAR2 ( 16 ) PATH '$.email',
"salary" NUMBER PATH '$.salary'
)
JT;
절차
JSON 파일을 ObjectStorage에 업로드
JSON_EXT 버킷 > Upload > select files > Upload를 선택하고 실행하여 emp.json 파일을 ObjectStorage에 업로드
ADB에서 ObujectStorage에 액세스하기 위한 준비(자격 증명 설정)
SQL 선택
Worksheet에서 스크립트 실행
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'CRED_JSON_EXT',
username => '[email protected]',
password => 'password' );
END;
/
※ username/password는 사전에 입수해 둘 필요가 있다
JSON 파일에 액세스하는 외부 테이블 작성
외부 테이블 작성
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
TABLE_NAME => 'EMP_JSON_EXT',
credential_name => 'JSON_EXT_CRED'
FILE_URI_LIST => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/xxxxxxxx/b/JSON_EXT/o/emp.json',
COLUMN_LIST => 'json_document blob',
FIELD_LIST => 'json_document char(10000)',
FORMAT => JSON_OBJECT(
'type' VALUE 'json',
'rejectlimit' VALUE '999999999'
)
);
END;
/
외부 테이블에 액세스
→ BLOB 형식으로 데이터가 저장되었는지 확인
JSON 파일을 2차원 테이블로 취급하기 위한 View 작성
BLOB에 저장된 데이터를 View를 작성한 후 참조
CREATE OR REPLACE FORCE EDITIONABLE VIEW "ADMIN"."V_EMP_JSON_EXT" (
"job",
"name",
"email",
"salary"
) DEFAULT COLLATION "USING_NLS_COMP" AS
SELECT
JT."job",
JT."name",
JT."email",
JT."salary"
FROM
"ADMIN"."EMP_JSON_EXT" RT,
JSON_TABLE ( "JSON_DOCUMENT", '$[*]'
COLUMNS
"job" VARCHAR2 ( 16 ) PATH '$.job',
"name" VARCHAR2 ( 8 ) PATH '$.name',
"email" VARCHAR2 ( 16 ) PATH '$.email',
"salary" NUMBER PATH '$.salary'
)
JT;
JSON 데이터를 2차원 테이블로 액세스할 수 있는지 확인
참고
Object Storage에 넣을 JSON 파일
{"name" : "Blake", "job" : "Intern", "salary" : 30000}
{"name" : "Smith", "job" : "Programmer", "salary" : 80000}
{"name" : "Miller", "job" : "Programmer", "salary" : 90000}
{"name" : "Clark", "job" : "Manager", "salary" : 100000}
{"name" : "King", "job" : "President", "salary" : 200000, "email" : "[email protected]"}
위의 JSON 파일을 2차원 테이블로 액세스하기 위한 테이블(View)
CREATE OR REPLACE FORCE EDITIONABLE VIEW "ADMIN"."V_EMP_JSON_EXT" (
"job",
"name",
"email",
"salary"
) DEFAULT COLLATION "USING_NLS_COMP" AS
SELECT
JT."job",
JT."name",
JT."email",
JT."salary"
FROM
"ADMIN"."EMP_JSON_EXT" RT,
JSON_TABLE ( "JSON_DOCUMENT", '$[*]'
COLUMNS
"job" VARCHAR2 ( 16 ) PATH '$.job',
"name" VARCHAR2 ( 8 ) PATH '$.name',
"email" VARCHAR2 ( 16 ) PATH '$.email',
"salary" NUMBER PATH '$.salary'
)
JT;
절차
JSON 파일을 ObjectStorage에 업로드
JSON_EXT 버킷 > Upload > select files > Upload를 선택하고 실행하여 emp.json 파일을 ObjectStorage에 업로드
ADB에서 ObujectStorage에 액세스하기 위한 준비(자격 증명 설정)
SQL 선택
Worksheet에서 스크립트 실행
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'CRED_JSON_EXT',
username => '[email protected]',
password => 'password' );
END;
/
※ username/password는 사전에 입수해 둘 필요가 있다
JSON 파일에 액세스하는 외부 테이블 작성
외부 테이블 작성
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
TABLE_NAME => 'EMP_JSON_EXT',
credential_name => 'JSON_EXT_CRED'
FILE_URI_LIST => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/xxxxxxxx/b/JSON_EXT/o/emp.json',
COLUMN_LIST => 'json_document blob',
FIELD_LIST => 'json_document char(10000)',
FORMAT => JSON_OBJECT(
'type' VALUE 'json',
'rejectlimit' VALUE '999999999'
)
);
END;
/
외부 테이블에 액세스
→ BLOB 형식으로 데이터가 저장되었는지 확인
JSON 파일을 2차원 테이블로 취급하기 위한 View 작성
BLOB에 저장된 데이터를 View를 작성한 후 참조
CREATE OR REPLACE FORCE EDITIONABLE VIEW "ADMIN"."V_EMP_JSON_EXT" (
"job",
"name",
"email",
"salary"
) DEFAULT COLLATION "USING_NLS_COMP" AS
SELECT
JT."job",
JT."name",
JT."email",
JT."salary"
FROM
"ADMIN"."EMP_JSON_EXT" RT,
JSON_TABLE ( "JSON_DOCUMENT", '$[*]'
COLUMNS
"job" VARCHAR2 ( 16 ) PATH '$.job',
"name" VARCHAR2 ( 8 ) PATH '$.name',
"email" VARCHAR2 ( 16 ) PATH '$.email',
"salary" NUMBER PATH '$.salary'
)
JT;
JSON 데이터를 2차원 테이블로 액세스할 수 있는지 확인
참고
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'CRED_JSON_EXT',
username => '[email protected]',
password => 'password' );
END;
/
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
TABLE_NAME => 'EMP_JSON_EXT',
credential_name => 'JSON_EXT_CRED'
FILE_URI_LIST => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/xxxxxxxx/b/JSON_EXT/o/emp.json',
COLUMN_LIST => 'json_document blob',
FIELD_LIST => 'json_document char(10000)',
FORMAT => JSON_OBJECT(
'type' VALUE 'json',
'rejectlimit' VALUE '999999999'
)
);
END;
/
CREATE OR REPLACE FORCE EDITIONABLE VIEW "ADMIN"."V_EMP_JSON_EXT" (
"job",
"name",
"email",
"salary"
) DEFAULT COLLATION "USING_NLS_COMP" AS
SELECT
JT."job",
JT."name",
JT."email",
JT."salary"
FROM
"ADMIN"."EMP_JSON_EXT" RT,
JSON_TABLE ( "JSON_DOCUMENT", '$[*]'
COLUMNS
"job" VARCHAR2 ( 16 ) PATH '$.job',
"name" VARCHAR2 ( 8 ) PATH '$.name',
"email" VARCHAR2 ( 16 ) PATH '$.email',
"salary" NUMBER PATH '$.salary'
)
JT;
Reference
이 문제에 관하여(Object Storage의 JSON 파일을 Autonomous Database에서 외부 테이블로 액세스 할 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TakuyaAma/items/86539cb99596c8d6b0ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)