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.)