Object Storage의 JSON 파일을 Autonomous Database에서 외부 테이블로 액세스 할 때의 메모

이 기사에서 설명하는 것



Object Storage의 JSON 파일을 Autonomous Database에서 외부 테이블로 액세스할 때의 절차 메모를 제공합니다.
필요한 절차는 다음과 같습니다.
  • 클라우드 환경 설정(ADB, ObjectStorage)
  • JSON 파일을 ObjectStorage에 업로드
  • ADB에서 ObujectStorage에 액세스하기위한 준비 (자격 증명 또는 주체 설정)
  • JSON 파일에 액세스하는 외부 테이블 작성
  • JSON 파일을 2 차원 테이블로 취급하기위한 View 작성

  • 전제



    다음을 전제로 합니다.
    - 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차원 테이블로 액세스할 수 있는지 확인

    참고


  • Document: Autonomous Database
  • Query External Data
  • Using Resource Principal Credential to Access Oracle Cloud Infrastructure Resources

  • 좋은 웹페이지 즐겨찾기