객체 및 파일에 대한 DBMS_CLOUD

이 절에서는 객체 및 파일 작업에 사용되는 DBMS_CLOUD 서브 프로그램을 다룹니다.

필수 조건

개발자는 Oracle Public Cloud, 멀티클라우드 또는 Exadata Cloud@Customer에 배포된 자율운영 AI 데이터베이스와 함께 DBMS_CLOUD 절차를 사용할 수 있습니다.

배포 선택에 따라 Amazon S3, Azure Blob Storage 및 Google Cloud Storage 서비스 공급자와 함께 DBMS_CLOUD 절차를 사용하려면 다음 필요 조건을 충족해야 합니다.

객체 및 파일에 대한 DBMS_CLOUD 서브 프로그램

DBMS_CLOUD 패키지 내의 객체 및 파일 관리에 대한 서브 프로그램입니다.

하위 프로그램 설명
COPY_COLLECTION 프로시저 이 절차에서는 Cloud Object Storage 또는 디렉토리의 파일에서 기존 SODA 모음으로 데이터를 로드합니다.
COPY_DATA 프로시저 이 절차에서는 클라우드 오브젝트 스토리지 또는 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다.
Avro, ORC 또는 Parquet 파일에 대한 COPY_DATA 프로시저

format 매개변수 typeorc,parquet 또는 avro 값으로 설정된 이 프로시저는 클라우드의 ORC, Parquet 또는 Avro 파일이나 디렉토리의 ORC, Parquet 또는 Avro 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다.

텍스트 파일과 마찬가지로 데이터는 소스 ORC, Parquet 또는 Avro 파일에서 기존 내부 테이블로 복사됩니다.

COPY_OBJECT 프로시저 이 절차에서는 클라우드 오브젝트 스토리지 버킷 간에 파일을 복사합니다.
CREATE_EXTERNAL_TABLE 프로시저 이 절차에서는 클라우드 또는 디렉토리의 파일에 외부 테이블을 생성합니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.
Avro, ORC 또는 Parquet 파일에 대한 CREATE_EXTERNAL_TABLE 프로시저

format 매개변수 typeparquet,orc 또는 avro 값으로 설정된 이 프로시저는 클라우드 또는 디렉토리에 Parquet, ORC 또는 Avro 형식 파일이 있는 외부 테이블을 생성합니다.

이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.

CREATE_EXTERNAL_TEXT_INDEX 프로시저 이 프로시저는 객체 저장소 파일에 텍스트 인덱스를 생성합니다.
CREATE_HYBRID_PART_TABLE 프로시저 이 절차에서는 하이브리드 분할 테이블을 만듭니다. 이를 통해 자율운영 AI 데이터베이스에서 하이브리드 파티셔닝된 데이터에 대한 쿼리를 실행할 수 있습니다.
DELETE_ALL_OPERATIONS 프로시저 이 프로시저는 type 매개변수에 표시된 대로 스키마의 user_load_operations 테이블에 기록된 모든 데이터 로드 작업을 지우거나 지정된 유형의 모든 데이터 로드 작업을 지웁니다.
DELETE_FILE 프로시저 이 절차에서는 자율운영 AI 데이터베이스의 지정된 디렉토리에서 지정된 파일을 제거합니다.
DELETE_OBJECT 프로시저 이 절차는 객체 저장소에서 지정된 객체를 삭제합니다.
DELETE_OPERATION 프로시저 이 프로시저는 operation_id를 입력으로 받아들이고 지정된 operation_id과 연관된 로그를 삭제합니다.
DROP_EXTERNAL_TEXT_INDEX 프로시저 이 프로시저는 객체 저장소 파일의 텍스트 인덱스를 삭제합니다.
EXPORT_DATA 프로시저 이 절차에서는 쿼리 결과에 따라 자율운영 AI 데이터베이스의 데이터를 클라우드의 파일로 익스포트합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다. 지정된 format 매개변수 type 옵션에 따라 프로시저는 CSV, JSON, Parquet 또는 XML 옵션이 있는 텍스트로 Cloud Object 저장소에 행을 익스포트합니다.
GET_OBJECT 프로시저 및 함수 이 프로시저는 오버로드됩니다. 프로시저 폼은 클라우드 객체 스토리지에서 객체를 읽어 자율운영 AI 데이터베이스에 복사합니다. 함수 양식은 클라우드 오브젝트 스토리지에서 객체를 읽고 BLOB를 자율운영 AI 데이터베이스로 반환합니다.
LIST_FILES 함수 이 함수는 지정된 디렉토리의 파일을 나열합니다. 결과에는 파일 이름 및 파일에 대한 추가 메타 데이터(예: 파일 크기(바이트), 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.
LIST_OBJECTS 함수 이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록과 같은 객체에 대한 객체 이름과 추가 메타 데이터가 포함됩니다.
MOVE_OBJECT 프로시저 이 절차에서는 한 클라우드 오브젝트 스토리지 버킷에서 다른 버킷으로 오브젝트를 이동합니다.
PUT_OBJECT 프로시저 이 프로시저는 오버로드됩니다. 이 절차에서는 자율운영 AI 데이터베이스의 파일을 클라우드 오브젝트 스토리지로 복사합니다. 다른 형태의 절차에서는 자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 BLOB를 복사합니다.
SYNC_EXTERNAL_PART_TABLE 프로시저 이 절차에서는 클라우드의 파일에서 외부 분할 테이블 업데이트를 간소화합니다. 새 분할 영역이 추가되거나 외부 분할 테이블에 대한 객체 저장소 소스에서 분할 영역이 제거될 때마다 이 절차를 실행합니다.
VALIDATE_EXTERNAL_TABLE 프로시저 이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다.
VALIDATE_EXTERNAL_PART_TABLE 프로시저 이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다.
VALIDATE_HYBRID_PART_TABLE 프로시저 이 프로시저는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다.

COPY_COLLECTION 프로시저

이 절차에서는 클라우드 오브젝트 스토리지 또는 디렉토리에서 SODA 모음으로 데이터를 로드합니다. 지정된 SODA 컬렉션이 없으면 프로시저에서 컬렉션을 생성합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);
DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

매개변수

매개변수 설명
collection_name 데이터가 로드될 SODA 모음의 이름입니다. 이 이름의 모음이 존재하는 경우 지정된 데이터가 로드되고, 그렇지 않으면 새 모음이 생성됩니다.
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

이 매개변수는 file_uri_list로 디렉토리를 지정할 때 사용되지 않습니다.

file_uri_list

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자가 될 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자가 될 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예:'MY_DIR1:*, MY_DIR2:test?'

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: '"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

format

소스 파일의 형식을 설명하는 옵션입니다. 이러한 옵션은 JSON 문자열로 지정됩니다.

지원되는 형식은 characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray, keyassignmentkeypath입니다.

JSON 데이터에 대해 언급된 형식 외에도 자율운영 AI 데이터베이스는 다른 형식도 지원합니다. 자율운영 AI 데이터베이스에서 지원되는 형식 인수 목록은 형식 매개변수를 참조하십시오.

operation_id 이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'
            );
END;
/

COPY_DATA 프로시저

이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);
DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

매개변수

매개변수 설명
table_name 데이터베이스에 있는 대상 테이블의 이름입니다. COPY_DATA를 실행하기 전에 대상 테이블을 생성해야 합니다.
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

이 매개변수는 file_uri_list로 디렉토리를 지정할 때 사용되지 않습니다.

file_uri_list

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

클라우드 소스 파일 URI

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자와 함께 사용할 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자와 함께 사용할 수 있으며, 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예: 'MY_DIR1:*, MY_DIR2:test?'

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: '"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

schema_name 대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
field_list

소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의 field_list 절과 동일합니다. 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilitiesfield_list를 참조하십시오.

format 매개변수 type 옵션 값이 json인 경우 이 매개변수는 무시됩니다.

field_list 사용 예제는 CREATE_EXTERNAL_TABLE Procedure를 참조하십시오.

format

소스, 로그 및 잘못된 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 파일 형식 옵션은 Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오.

operation_id 이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

사용 노트

기본 레코드 구분자는 detected newline입니다. detected newline를 사용할 경우 DBMS_CLOUD는 자동으로 레코드 구분자로 사용할 올바른 줄바꿈 문자를 찾으려고 시도합니다. DBMS_CLOUD는 먼저 Windows 줄바꿈 문자 \r\n를 검색합니다. Windows 줄바꿈 문자를 찾으면 이 문자는 절차의 모든 파일에 대한 레코드 구분자로 사용됩니다. Windows 줄바꿈 문자를 찾을 수 없는 경우 DBMS_CLOUD는 UNIX/Linux 줄바꿈 문자 \n를 검색하고 찾으면 절차의 모든 파일에 대한 레코드 구분자로 \n를 사용합니다. 소스 파일에서 서로 다른 레코드 구분자의 조합을 사용하는 경우 "KUP-04020: found record longer than buffer size supported"과 같은 오류가 발생할 수 있습니다. 이 경우 동일한 레코드 구분자를 사용하도록 소스 파일을 수정하거나 동일한 레코드 구분자를 사용하는 소스 파일만 지정해야 합니다.

recorddelmiter 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

Avro, ORC 또는 Parquet 파일에 대한 COPY_DATA 프로시저

format 매개변수 typeavro, orc 또는 parquet 값으로 설정된 이 절차는 클라우드의 Avro, ORC 또는 Parquet 파일이나 디렉토리의 파일에서 기존 자율운영 AI 데이터베이스 테이블로 데이터를 로드합니다.

텍스트 파일과 마찬가지로 데이터는 소스 Avro, ORC 또는 Parquet 파일에서 기존 내부 테이블로 복사됩니다.

구문

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

매개변수

매개변수 설명
table_name 데이터베이스에 있는 대상 테이블의 이름입니다. COPY_DATA를 실행하기 전에 대상 테이블을 생성해야 합니다.
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

이 매개변수는 file_uri_list로 디렉토리를 지정할 때 사용되지 않습니다.

file_uri_list

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자와 함께 사용할 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자와 함께 사용할 수 있으며, 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예:'MY_DIR1:*, MY_DIR2:test?'

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: '"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

schema_name 대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
field_list

Avro, ORC 또는 Parquet 파일의 경우 무시됩니다.

소스의 필드는 이름별로 External Table 열과 일치합니다. 소스 데이터 유형은 External Table 열 데이터 유형으로 변환됩니다.

ORC 파일의 경우 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Parquet 파일의 경우 매핑에 대한 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 매핑에 대한 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

format 소스 파일의 형식을 설명하는 옵션입니다. Avro, ORC 또는 Parquet 파일의 경우 두 가지 옵션만 지원됩니다. Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오.

사용법 참고

COPY_OBJECT 프로시저

이 절차에서는 한 클라우드 오브젝트 스토리지 버킷 또는 폴더의 객체를 다른 버킷 또는 폴더로 복사합니다.

소스 및 대상 버킷 또는 폴더는 동일하거나 다른 클라우드 객체 저장소 제공자에 있을 수 있습니다.

소스 및 대상이 고유한 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 서로 다른 경우 소스 및 대상 위치에 대해 별도의 인증서 이름을 지정할 수 있습니다.

소스 인증서 이름은 기본적으로 대상 인증서 이름이 제공되지 않은 경우 대상 위치에서도 사용됩니다.

구문

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

매개변수

매개변수 설명
source_credential_name

소스 클라우드 오브젝트 스토리지에 액세스할 수 있는 인증서의 이름입니다.

source_credential_name 값을 제공하지 않을 경우 credential_nameNULL로 설정됩니다.

source_object_uri

소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

target_object_uri

대상 객체 저장소의 URI을 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

target_credential_name

대상 클라우드 오브젝트 스토리지 위치에 액세스하기 위한 인증서의 이름입니다.

target_credential_name 값을 제공하지 않을 경우 target_object_urisource_credential_name 값으로 설정됩니다.

BEGIN
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

CREATE_EXTERNAL_PART_TABLE 프로시저

이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 외부 분할 테이블을 만듭니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
partitioning_clause

개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다.

partitioning_clause 매개변수를 사용하는 경우 file_uri_list 매개변수가 허용되지 않습니다.

file_uri_list

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

file_uri_list 매개변수를 사용하는 경우 partitioning_clause 매개변수가 허용되지 않습니다.

URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

column_list

콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다. 이 매개변수는 file_uri_list 매개변수로 지정된 데이터 파일의 유형에 따라 다음 요구 사항을 갖습니다.

  • column_list 매개변수는 구조화되지 않은 파일에 필요합니다. CSV 텍스트 파일과 같이 구조화되지 않은 파일을 사용하는 경우 column_list 매개변수는 데이터 파일 내의 모든 열 이름 및 데이터 유형과 객체 이름에서 파생된 분할 영역 열을 지정해야 합니다.

  • column_list 매개변수는 구조화된 파일의 경우 선택 사항입니다. 예를 들어, Avro, ORC 또는 Parquet 데이터 파일의 경우 column_list가 필요하지 않습니다. column_list가 포함되지 않은 경우 format 매개변수 partition_columns 옵션은 열 이름(name) 및 데이터 유형(type) 모두에 대한 사양을 포함해야 합니다.

field_list 소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의 field_list 절과 동일합니다. 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilitiesfield_list를 참조하십시오.
format

형식 옵션 partition_columns는 데이터 파일 유형(정형 또는 비정형)에 따라 분할 영역 열이 파일 경로에서 파생될 때 분할 영역 열의 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 열 이름과 데이터 유형을 지정합니다.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_list 매개변수가 포함되어 있고 CSV 텍스트 파일과 같이 데이터 파일이 구조화되지 않은 경우 partition_columns에 데이터 유형이 포함되지 않습니다. 예를 들어, 이 유형의 partition_columns 사양에 대해 다음과 같은 형식을 사용합니다.

    '"partition_columns":["state","zipcode"]'

    데이터 유형이 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list 매개변수에 지정되어 있으므로 필요하지 않습니다.

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEcolumn_list 매개변수가 포함되지 않고 Avro, ORC 또는 Parquet 파일과 같은 데이터 파일이 구조화된 경우 partition_columns 옵션에는 열 이름, name 하위 절 및 데이터 유형 type 하위 절이 모두 포함됩니다. 예를 들어, 다음은 partition_columns 사양을 보여줍니다.

    '"partition_columns":[ {"name":"country", "type":"varchar2(10)"}, {"name":"year", "type":"number"}, {"name":"month", "type":"varchar2(10)"}]'

데이터 파일이 구조화되지 않고 type 하위 절이 partition_columns로 지정된 경우 type 하위 절이 무시됩니다.

하이브 형식을 기반으로 하지 않는 객체 이름의 경우 지정된 partition_columns 열의 순서는 file_uri_list 매개변수에 지정된 파일 경로의 객체 이름에 나타나는 순서와 일치해야 합니다.

소스 파일의 형식을 설명하는 모든 format 매개변수 옵션을 보려면 Cloud Object Storage URI 형식을 참조하십시오.

사용법 참고

예: partitioning_clause 매개변수 사용

BEGIN
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) location
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );
END;
/

예: 구조화되지 않은 데이터 파일에 file_uri_listcolumn_list 매개변수 사용

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv',
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)',
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/

예: 구조화된 데이터 파일에서 column_list 매개변수 없이 file_uri_list 사용

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          =>
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

예제: C3 오브젝트 스토리지 버킷에 저장된 객체를 사용하여 외부 분할 테이블 생성

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
     table_name => 'USAGE_EXTP',
     credential_name => 'OBJECT_STORAGE_CREDENTIAL',
     file_uri_list => 'https://objectstorage.mydomain.com/n/mytenancy/b/mybucket/o/usage-data/*usage-data*.parquet',
     format => json_object(
          'type' value 'parquet', 'schema' value 'first',
          'partition_columns' value json_array(
                json_object('name' value 'year', 'type' value 'number'),         
                json_object('name' value 'month', 'type' value 'number'),
                json_object('name' value 'day', 'type' value 'number')
          )
     )
   );
END;
/

CREATE_EXTERNAL_TABLE 프로시저

이 절차에서는 클라우드의 파일 또는 디렉토리의 파일에서 외부 테이블을 생성합니다. 이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

이 매개변수는 file_uri_list를 사용하여 디렉토리 또는 테이블 하이퍼링크 URL을 지정할 때 사용되지 않습니다.

file_uri_list

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. 문자 "*"는 여러 문자에 대한 와일드 카드 문자가 될 수 있으며, 문자 "?"는 단일 문자의 와일드 카드 문자가 될 수 있습니다. 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예:'MY_DIR1:*, MY_DIR2:test?'

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: '"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

column_list 콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다.
field_list 소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드 및 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle Database 외부 테이블의 field_list 절과 동일합니다. field_list에 대한 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilities의 field_definitions 절 아래에 있는 ORACLE_LOADER Access Driver field_list를 참조하십시오.
format

소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 형식 파일의 경우 Avro, ORC 또는 Parquet Files의 CREATE_EXTERNAL_TABLE Procedure를 참조하십시오.

사용법 참고

예: 오브젝트 스토리지의 CSV 파일에서 외부 테이블 생성

BEGIN
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',
      credential_name =>'OBJ_STORE_CRED',
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,
                     ACTUAL_MIN_TEMP,
                     ACTUAL_MAX_TEMP,
                     AVERAGE_MIN_TEMP,
                     AVERAGE_MAX_TEMP,
                     AVERAGE_PRECIPITATION',
      column_list => 'REPORT_DATE DATE,
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,
                     ACTUAL_MIN_TEMP NUMBER,
                     ACTUAL_MAX_TEMP NUMBER,
                     AVERAGE_MIN_TEMP NUMBER,
                     AVERAGE_MAX_TEMP NUMBER,
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where
   actual_mean_temp > 69 and actual_mean_temp < 74

예: C3 오브젝트 스토리지 버킷에 저장된 객체를 사용하여 외부 테이블 생성

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
     table_name =>'CHANNELS_EXT',
     credential_name =>'OBJECT_STORAGE_CREDENTIAL',
     file_uri_list => '<https://objectstorage.mydomain.com/n/mytenancy/b/mybucket/o/channels.txt>',
     format => json_object('delimiter' value ','),
     column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)'
  );
END;
/

Apache Iceberg용 CREATE_EXTERNAL_TABLE 프로시저

이 절차에서는 지원되는 구성에서 Apache Iceberg 테이블에 대한 외부 테이블을 생성합니다.

다음과 같은 특정 구성이 지원됩니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
credential_name

데이터 파일, 메타데이터 파일 및 Iceberg 카탈로그(사용된 경우)에 액세스하는 데 사용되는 인증서의 이름입니다.

AWS 및 OCI 구성의 경우 CREATE_CREDENTIAL Procedure에 설명된 대로 인증서를 생성해야 합니다.

AWS ARN(Amazon Resource Names) 자격 증명은 현재 지원되지 않습니다.

file_uri_list Iceberg 카탈로그가 지정된 경우 NULL이어야 합니다(아래의 format 매개변수 참조). 빙산 카탈로그를 사용하지 않는 경우 file_uri_list는 빙산 메타데이터 파일에 대한 URI를 포함해야 합니다.
column_list

열 이름과 유형이 Iceberg 메타데이터에서 자동으로 파생되므로 NULL이어야 합니다.

열 이름은 기본 데이터 파일(Parquet, Avro, ORC)에서 찾은 이름과 일치합니다. Oracle 데이터 유형은 Iceberg와 Parquet, Avro 및 ORC 데이터 유형 간의 Parquet/Avro/ORC 매핑을 사용하여 파생됩니다. 따라서 사용자는 column_list를 지정할 수 없습니다.

field_list 열 이름 및 데이터 유형이 Iceberg 메타데이터에서 자동으로 파생되므로 NULL이어야 합니다.
format

format 매개변수는 Iceberg 테이블 유형 및 외부 테이블 생성에 사용되는 정보(예: 데이터 카탈로그 또는 직접 메타데이터 URI의 정보)에 따라 다른 구조를 가집니다.

자세한 내용은 OCI Data Flow Samples의 Iceberg 지원DBMS_CLOUD URI 형식을 참고하세요.

샘플 형식 매개변수

Avro, ORC 또는 Parquet 파일에 대한 CREATE_EXTERNAL_TABLE 프로시저

format 매개변수 typeavro, orc 또는 parquet 값으로 설정된 이 프로시저는 클라우드 또는 디렉토리에 Avro, ORC 또는 Parquet 형식 파일이 있는 외부 테이블을 생성합니다.

이를 통해 자율운영 AI 데이터베이스에서 외부 데이터에 대한 질의를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

이 매개변수는 file_uri_list로 디렉토리를 지정할 때 사용되지 않습니다.

file_uri_list

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

클라우드 소스 파일 URI

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

이 옵션은 오브젝트 스토리지의 파일에 생성되는 외부 테이블에서만 지원됩니다.

예:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

디렉토리

하나의 디렉토리와 하나 이상의 파일 이름을 지정하거나 콤마로 구분된 디렉토리 및 파일 이름 목록을 사용할 수 있습니다. 디렉토리를 지정하는 형식은 'MY_DIR:filename.ext'입니다. 기본적으로 디렉토리 이름 MY_DIR은 데이터베이스 객체이며 대소문자를 구분하지 않습니다. 파일 이름은 대/소문자를 구분합니다.

와일드카드를 사용하여 디렉토리에 파일 이름을 지정할 수 있습니다. "*" 문자는 여러 문자에 대한 와일드 카드 문자로서 사용할 수 있으며, "?" 문자는 단일 문자의 와일드 카드 문자로서 사용할 수 있으며, 예: 'MY_DIR:*" 또는 'MY_DIR:test?'

여러 디렉토리를 지정하려면 콤마로 구분된 디렉토리 목록을 사용합니다. 예:'MY_DIR1:*, MY_DIR2:test?'

큰따옴표를 사용하여 대소문자를 구분하는 디렉토리 이름을 지정합니다. 예: '"my_dir1":*, "my_dir2":Test?'

따옴표를 포함하려면 두 개의 따옴표를 사용합니다. 예: 'MY_DIR:''filename.ext'. filename가 따옴표(')로 시작하도록 지정합니다.

column_list

(선택 사항) 이 필드는 지정된 경우 스키마, 열 및 데이터 유형이 자동으로 파생되도록 지정하는 format->schema 매개변수를 무효화합니다. 자세한 내용은 format 매개변수를 참조하십시오.

Avro, ORC 또는 Parquet 소스에 대해 column_list가 지정된 경우 열 이름은 파일에서 찾은 열 이름과 일치해야 합니다. Oracle 데이터 유형은 Avro, ORC 또는 Parquet 데이터 유형에 적절히 매핑되어야 합니다.

Parquet 파일의 경우 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

ORC 파일의 경우 자세한 내용은 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

field_list

Avro, ORC 또는 Parquet 파일의 경우 무시됩니다.

소스의 필드는 이름별로 External Table 열과 일치합니다. 소스 데이터 유형은 External Table 열 데이터 유형으로 변환됩니다.

ORC 파일의 경우 DBMS_CLOUD Package ORC to Oracle Data Type Mapping을 참조하십시오.

Parquet 파일의 경우 자세한 내용은 DBMS_CLOUD Package Parquet to Oracle Data Type Mapping을 참조하십시오.

Avro 파일의 경우 자세한 내용은 DBMS_CLOUD Package Avro to Oracle Data Type Mapping을 참조하십시오.

format Avro, ORC 또는 Parquet type 소스 파일의 경우 자세한 내용은 Avro, ORC 또는 Parquet에 대한 DBMS_CLOUD Package Format Options을 참조하십시오.

참고: Oracle SQL의 열 이름 매핑 및 열 이름 변환 사용에 대한 자세한 내용은 DBMS_CLOUD Package Avro, ORC 및 Parquet to Oracle Column Name Mapping을 참조하십시오.

CREATE_EXTERNAL_TEXT_INDEX 프로시저

이 절차에서는 오브젝트 스토리지 파일에 텍스트 인덱스를 생성합니다.

CREATE_EXTERNAL_TEXT_INDEX 프로시저는 location_uri 위치에 지정된 오브젝트 스토리지 파일에 텍스트 인덱스를 생성합니다. 위치 URI의 파일에 대해 수행된 새 추가 또는 삭제에 대해 정기적으로 인덱스가 새로 고쳐집니다.

구문

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

매개변수

매개변수 설명
credential_name

클라우드 오브젝트 스토리지 위치에 액세스하기 위한 인증서의 이름입니다. 공용, 사전 인증 또는 사전 서명된 버킷 URI의 경우 NULL을 지정할 수 있습니다.

credential_name 값을 제공하지 않을 경우 credential_nameNULL 값으로 설정됩니다.

location_uri

이 매개변수는 콤마로 구분된 소스 파일 URI 목록을 지정합니다.

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

이 매개변수는 필수입니다.

클라우드 소스 파일 URI

이 매개변수는 콤마로 구분된 소스 파일 URI 목록 또는 하나 이상의 디렉토리와 소스 파일을 지정합니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다.

정규 표현식을 사용하는 예제:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

와일드카드를 사용하는 예:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

REGEXP_LIKE 조건에 대한 자세한 내용은 REGEXP_LIKE 조건을 참조하십시오.

index_name `location_uri` 위치에 있는 파일에 작성 중인 인덱스의 이름을 지정합니다.

이 매개변수는 필수입니다.

format

추가 구성 옵션을 지정합니다. 옵션은 JSON 문자열로 지정됩니다.

지원되는 형식 옵션은 다음과 같습니다.

refresh_rate: 로컬 인덱스가 새로 고쳐지는 빈도(분)를 지정합니다. 새 파일 업로드 및 삭제로 인해 인덱스가 새로 고쳐집니다. 기본값은 5분입니다.

binary_files: 인덱스화할 파일의 콘텐츠가 이진인지 여부를 지정합니다. 예를 들어, PDF, MS-Word의 경우 기본값은 FALSE입니다.

stop_words: 인덱스를 생성할 때 제공할 수 있는 정지 단어 목록을 지정합니다.

stop_words 값은 중지 단어 목록인지 또는 중지 단어 테이블인지 나타냅니다. JSON 배열이 제공되면 정지 단어 매개변수는 목록으로 처리되고, 그렇지 않으면 정지 단어 매개변수는 정지 단어 목록에서 읽기 위해 "STOP_WORDS" 열이 사용되는 테이블 이름으로 처리됩니다.

다음 방법을 사용하여 중지 단어를 지정할 수 있습니다.

  • JSON 배열: 예: format := '{"stop_words":["king","queen"]}'
  • 정지 단어 테이블 이름: 예: format := '{"stop_words":"STOP_WORDS_TABLE"}'

format 매개변수를 제공하지 않을 경우 formatNULL 값으로 설정됩니다.

BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

CREATE_HYBRID_PART_TABLE 프로시저

이 절차에서는 하이브리드 분할 테이블을 만듭니다. 이를 통해 클라우드의 데이터베이스 객체 및 파일을 사용하거나 디렉토리의 데이터베이스 객체 및 파일을 사용하여 자율운영 AI 데이터베이스에서 하이브리드 분할 데이터에 대한 쿼리를 실행할 수 있습니다.

구문

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
partitioning_clause

개별 분할 영역에 대한 위치 정보를 포함하여 전체 분할 절을 지정합니다.

디렉토리를 사용하기 위해 분할 절은 LOCATIONDEFAULT DIRECTORY 값을 지원합니다.

클라우드 소스 파일 URI의 파일 이름에 와일드카드와 정규 표현식을 사용할 수 있습니다.

정규 표현식은 regexuri format 매개변수가 TRUE로 설정된 경우에만 사용할 수 있습니다.

regexuri 매개변수가 FALSE로 설정된 경우 "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다. regexuri 매개변수가 TRUE로 설정된 경우 "*" 및 "?" 문자는 지정된 정규 표현식 패턴의 일부입니다.

정규식 패턴은 URI의 파일 이름 또는 하위 폴더 경로에 대해서만 지원되며 패턴 일치는 REGEXP_LIKE 함수에 의해 수행되는 것과 동일합니다. 디렉토리 이름에 대해서는 정규 표현식 패턴이 지원되지 않습니다.

예:

partitioning_clause => 'partition by range (col1) (partition p1 values less than (1000) external location ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),...

REGEXP_LIKE 조건에 대한 자세한 내용은 Oracle Database 19c SQL 언어 참조REGEXP_LIKE 조건 또는 Oracle Database 26ai SQL 언어 참조를 참조하십시오.

column_list 콤마로 구분된 외부 테이블에 대한 열 이름 및 데이터 유형 목록입니다.
field_list 소스 파일의 필드 및 해당 데이터 유형을 식별합니다. 기본값은 NULL입니다. 즉, 필드와 해당 데이터 유형은 column_list 매개변수에 의해 결정됩니다. 이 인수의 구문은 일반 Oracle 외부 테이블의 field_list 절과 동일합니다. 자세한 내용은 Oracle Database 19c Utilities 또는 Oracle Database 26ai Utilitiesfield_list를 참조하십시오.
format 소스 파일의 형식을 설명하는 옵션입니다. 옵션 목록 및 값 지정 방법은 형식 매개변수를 참조하십시오.

사용법 참고

BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/
BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

DELETE_ALL_OPERATIONS 프로시저

이 프로시저는 type 매개변수에 표시된 대로 스키마의 user_load_operations 테이블에 기록된 모든 데이터 로드 작업을 지우거나 지정된 유형의 모든 데이터 로드 작업을 지웁니다.

구문

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

매개변수

매개변수 설명
type

삭제할 작업의 유형을 지정합니다. 유형 값은 user_load_operations 테이블의 TYPE 열에서 찾을 수 있습니다.

type가 지정되지 않은 경우 모든 행이 삭제됩니다.

사용 노트

DBMS_CLOUD.DELETE_ALL_OPERATIONS는 현재 실행 중인 작업("실행 중" 상태의 작업)을 삭제하지 않습니다.

DELETE_FILE 프로시저

이 절차에서는 자율운영 AI 데이터베이스의 지정된 디렉토리에서 지정된 파일을 제거합니다.

구문

DBMS_CLOUD.DELETE_FILE (
      directory_name     IN VARCHAR2,
      file_name          IN VARCHAR2,
      force              IN BOOLEAN DEFAULT FALSE);

매개변수

매개변수 설명
directory_name 자율운영 AI 데이터베이스 인스턴스의 디렉토리 이름입니다.
file_name 제거할 파일의 이름입니다.
force 파일이 없으면 무시하고 오류를 보고하지 마십시오. 적합한 값은 TRUEFALSE입니다. 기본값은 FALSE입니다.

주: ADMIN이 아닌 다른 사용자와 함께 DBMS_CLOUD.DELETE_FILE를 실행하려면 해당 사용자가 파일을 포함하는 디렉토리에 대한 쓰기 권한을 부여해야 합니다. 예를 들어, ADMIN으로 다음 명령을 실행하여 atpc_user에 쓰기 권한을 부여합니다.

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/

DELETE_OBJECT 프로시저

이 절차는 객체 저장소에서 지정된 객체를 삭제합니다.

구문

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

매개변수

매개변수 설명
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
object_uri 삭제할 객체의 객체 또는 파일 URI입니다. URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
force 객체가 없는 경우 무시하고 오류를 보고하지 않습니다. 적합한 값은 TRUEFALSE입니다. 기본값은 FALSE입니다.

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/

DELETE_OPERATION 프로시저

이 프로시저는 스키마의 user_load_operations 또는 dba_load_operations 테이블에 기록된 지정된 작업 ID에 대한 데이터 로드 항목을 지웁니다.

구문

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

매개변수

매개변수 설명
id 삭제할 로그 파일 항목과 연관된 작업 ID를 지정합니다.

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

DROP_EXTERNAL_TEXT_INDEX 프로시저

이 절차에서는 오브젝트 스토리지 파일의 텍스트 색인을 삭제합니다.

DROP_EXTERNAL_TEXT_INDEX 프로시저는 CREATE_EXTERNAL_TEXT_INDEX 프로시저를 사용하여 생성된 지정된 인덱스를 삭제합니다.

구문

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

매개변수

매개변수 설명
index_name

삭제하려는 인덱스의 이름을 지정합니다.

인덱스 이름은 인덱스 생성 시 제공된 이름과 일치해야 합니다.

이 매개변수는 필수입니다.

BEGIN
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

EXPORT_DATA 프로시저

이 절차에서는 쿼리 결과를 기반으로 자율운영 AI 데이터베이스에서 데이터를 익스포트합니다. 이 절차는 오버로드되며 클라우드 또는 디렉토리에 파일 쓰기를 지원합니다.

format type 매개변수를 기반으로 프로시저는 파일을 클라우드로 익스포트하거나 디렉토리 위치로 CSV, JSON, Parquet 또는 XML 형식의 텍스트 파일로 익스포트합니다.

구문

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

매개변수

매개변수 설명
credential_name

클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.

인증서 파라미터가 포함되지 않은 경우 디렉토리에 대한 출력을 지정합니다.

file_uri_list

형식 매개변수의 값과 인증서 매개변수의 포함 여부에 따라 다른 형식이 있습니다.

  • format 매개변수 type 값이 json인 경우: 객체 저장소의 JSON 또는 지정된 디렉토리 위치는 file_uri_list 매개변수의 값을 기반으로 생성된 파일 이름으로 저장됩니다. 자세한 내용은 텍스트 출력에 대한 파일 이름 지정(CSV, JSON, Parquet 또는 XML)을 참조하십시오.

  • format 매개변수 type 값이 datapump인 경우 file_uri_list는 콤마로 구분된 덤프 파일 목록입니다. 객체 저장소에 생성할 파일을 지정합니다. file_uri_list에서는 와일드카드 및 대체 문자 사용이 지원되지 않습니다.

  • credential_name 매개변수가 지정되지 않은 경우 file_uri_list에 디렉토리 이름을 제공합니다.

URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

format

익스포트 형식 옵션을 제공하는 JSON 문자열입니다.

지원되는 옵션은 다음과 같습니다.

  • type: type format 옵션이 필요하며 csv | datapump | json | parquet | xml 값 중 하나를 포함해야 합니다.

EXPORT_DATA에 대한 DBMS_CLOUD 패키지 형식 옵션을 참조하십시오.

query

이 매개변수를 사용하여 필요한 데이터만 익스포트되도록 SELECT 문을 지정합니다. 질의는 익스포트하는 파일의 콘텐츠를 텍스트 파일 CSV, JSON, Parquet 또는 XML 또는 덤프 파일로 결정합니다. 예:

SELECT warehouse_id, quantity FROM inventories

format type 값이 json인 경우 각 질의 결과가 확인되고 JSON이 아닌 경우 JSON_OBJECT_T.parse() 함수로 결정된 대로 DBMS_CLOUD.EXPORT_DATA는 행을 JSON으로 변환하기 위해 JSON_OBJECT 함수를 포함하도록 질의를 변환합니다. 자세한 내용은 Oracle Database 19c SQL Language ReferenceJSON_OBJECT 또는 Oracle Database 26ai SQL Language ReferenceJSON_OBJECT_T Object TypeOracle Database 19c PL/SQL Packages and Types ReferenceOracle Database 26ai PL/SQL Packages and Types Reference를 참조하십시오.

예:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id 이 매개변수를 사용하여 익스포트 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.

사용법 참고

디렉토리에 대한 출력과 함께 `DBMS_CLOUD.EXPORT_DATA`에 대한 사용 정보

ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
ORA-27038: created file already exists

예: json 값을 가진 type 매개변수 형식의 DBMS_CLOUD.EXPORT_DATA

BEGIN
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json',
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/

예: xml 값을 가진 type 매개변수 형식의 DBMS_CLOUD.EXPORT_DATA

BEGIN
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml',
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

예: csv 값을 가진 type 매개변수 형식의 DBMS_CLOUD.EXPORT_DATA

BEGIN
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv',
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true ));
     );
   END;
/

GET_OBJECT 프로시저 및 함수

이 프로시저는 오버로드됩니다. 프로시저 폼은 클라우드 객체 스토리지에서 객체를 읽어 자율운영 AI 데이터베이스에 복사합니다. 함수 양식은 클라우드 오브젝트 스토리지에서 객체를 읽고 BLOB를 자율운영 AI 데이터베이스로 반환합니다.

구문

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);
DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

매개변수

매개변수 설명
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
object_uri 객체 또는 파일 URI입니다. URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
directory_name 데이터베이스의 디렉토리 이름입니다. (아래 각주 1 참조)
file_name 만들 파일의 이름을 지정합니다. 파일 이름을 지정하지 않으면 object_uri 매개변수의 마지막 슬래시 뒤에서 파일 이름을 가져옵니다. 특히 파일 이름에 슬래시가 포함된 경우 file_name 매개변수를 사용합니다.
startoffset 프로시저가 읽기를 시작하는 오프셋(바이트)입니다.
endoffset 프로시저 읽기가 중지될 때까지 오프셋(바이트)입니다.
compression 객체를 저장하는 데 사용되는 압축을 지정합니다. compression가 'AUTO'로 설정된 경우 파일의 압축이 해제됩니다. 'AUTO' 값은 object_uri로 지정된 객체가 Gzip으로 압축됨을 의미합니다.

Footnote 1

주: ADMIN이 아닌 다른 사용자와 함께 DBMS_CLOUD.GET_OBJECT를 실행하려면 해당 사용자에게 디렉토리에 대한 WRITE 권한을 부여해야 합니다. 예를 들어, ADMIN으로 다음 명령을 실행하여 atpc_user에 쓰기 권한을 부여합니다.

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

반환 값

함수 폼은 Object Store에서 읽으며 DBMS_CLOUD.GET_OBJECTBLOB를 반환합니다.

BEGIN
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR');
END;
/

예: 객체 저장소의 파일에서 문자 데이터를 읽습니다.

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

예: 데이터베이스의 BLOB에 객체 저장소에 저장된 이미지를 추가합니다.

DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

이 예에서 namespace-string은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.

LIST_FILES 함수

이 함수는 지정된 디렉토리의 파일을 나열합니다. 결과에는 파일 이름 및 파일에 대한 추가 메타 데이터(예: 파일 크기(바이트), 생성 시간 기록 및 마지막 수정 시간 기록)가 포함됩니다.

구문

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

매개변수

매개변수 설명
directory_name 데이터베이스의 디렉토리 이름입니다. 이 매개변수는 와일드카드를 지원합니다.

사용법 참고

예제: 다음 질의를 사용하여 DBMS_CLOUD.LIST_FILES를 각 파일에 대한 행을 반환하는 파이프라인 함수로 사용합니다.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');
OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

파일을 지정하거나 와일드카드를 사용하여 DBMS_CLOUD.LIST_FILESDIRECTORY:FILE 구문과 함께 사용할 수도 있습니다. 지원되는 와일드카드 문자는 * 및 ?입니다.

예: 와일드카드를 사용하여 DATA_PUMP_DIR 디렉토리에 "f"로 시작하는 모든 CSV 파일을 나열합니다.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f*.csv');

예: 파일 이름을 지정하여 DATA_PUMP_DIR 디렉토리에 f1.csv 파일을 나열합니다.

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR:f1.csv');

LIST_OBJECTS 함수

이 함수는 객체 저장소의 지정된 위치에 있는 객체를 나열합니다. 결과에는 크기, 체크섬, 생성 시간 기록 및 마지막 수정 시간 기록과 같은 객체에 대한 객체 이름과 추가 메타 데이터가 포함됩니다.

구문

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

매개변수

매개변수 설명
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
location_uri

오브젝트 스토리지 버킷 또는 폴더 URI입니다. URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.

와일드카드는 URI의 파일 또는 하위 폴더를 선택적으로 나열하는 데 지원됩니다. "*" 및 "?" 문자는 와일드카드 문자로 간주됩니다.

와일드카드를 사용하는 예:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv'

사용법 참고

이 함수는 각 객체에 대해 행을 반환하는 파이프라인된 함수입니다. 예를 들어, 다음 query를 사용하여 이 함수를 사용합니다.

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED',
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');
OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z

이 예에서 namespace-string은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.

MOVE_OBJECT 프로시저

이 절차에서는 Cloud Object Storage 버킷 또는 폴더 간에 객체를 이동합니다.

소스 및 대상 버킷 또는 폴더는 동일하거나 다른 클라우드 객체 저장소 제공자에 있을 수 있습니다.

소스 및 대상이 고유한 객체 저장소에 있거나 동일한 클라우드 제공자의 계정이 서로 다른 경우 소스 및 대상 위치에 대해 별도의 인증서 이름을 지정할 수 있습니다.

소스 인증서 이름은 기본적으로 대상 인증서 이름이 제공되지 않은 경우 대상 위치에서도 사용됩니다.

구문

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

매개변수

매개변수 설명
source_credential_name

소스 클라우드 오브젝트 스토리지에 액세스할 수 있는 인증서의 이름입니다.

source_credential_name 값을 제공하지 않을 경우 credential_nameNULL로 설정됩니다.

source_object_uri

소스 오브젝트 스토리지 버킷 또는 폴더 위치를 가리키는 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

target_object_uri

파일을 이동해야 하는 대상 오브젝트 스토리지 버킷 또는 폴더에 대한 URI를 지정합니다.

이 매개변수는 필수입니다.

URI의 형식은 클라우드 오브젝트 스토리지 서비스에 따라 다릅니다. 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

target_credential_name

대상 클라우드 오브젝트 스토리지 위치에 액세스하기 위한 인증서의 이름입니다.

target_credential_name 값을 제공하지 않을 경우 target_object_urisource_credential_name 값으로 설정됩니다.

BEGIN
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

PUT_OBJECT 프로시저

이 프로시저는 오버로드됩니다. 이 절차에서는 자율운영 AI 데이터베이스의 파일을 클라우드 오브젝트 스토리지로 복사합니다. 다른 형태의 절차에서는 자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 BLOB를 복사합니다.

구문

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);
DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

매개변수

매개변수 설명
credential_name 클라우드 오브젝트 스토리지에 액세스할 자격 증명 이름입니다.
object_uri 객체 또는 파일 URI입니다. URI 형식은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다. 자세한 내용은 클라우드 오브젝트 스토리지 URI 형식을 참조하십시오.
directory_name 데이터베이스의 디렉토리 이름입니다. (아래 각주 1 참조)
contents 자율운영 AI 데이터베이스에서 클라우드 객체 스토리지로 복사할 BLOB을 지정합니다.
file_name 지정된 디렉토리에 있는 파일의 이름입니다.
compression

객체를 저장하는 데 사용되는 압축을 지정합니다.

기본값: NULL

Footnote 1

주: ADMIN 이외의 사용자와 함께 DBMS_CLOUD.PUT_OBJECT를 실행하려면 디렉토리에 대한 읽기 권한을 해당 사용자에게 부여해야 합니다. 예를 들어, ADMIN으로 다음 명령을 실행하여 atpc_user에 읽기 권한을 부여합니다.

GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;

데이터베이스 내 처리 후 BLOB 데이터를 처리한 다음 객체 저장소의 파일에 직접 데이터를 저장하려면 다음과 같이 하십시오.

DECLARE
      my_blob_data BLOB;
BEGIN
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data));
END;
/

사용법 참고

클라우드 오브젝트 스토리지에 따라 전송하는 오브젝트의 크기가 다음과 같이 제한됩니다.

클라우드 오브젝트 스토리지 서비스 객체 전송 크기 제한
Oracle Cloud Infrastructure Object Storage 50 GB
Amazon S3 5 GB
Azure Blob 스토리지 256 MB
Amazon S3 호환 객체 저장소 제공자에 의해 설정됩니다. 자세한 내용은 제공자의 설명서를 참조하십시오.

Oracle Cloud Infrastructure 객체 저장소에서는 인증서를 제공하지 않고는 퍼블릭 버킷에 파일을 쓸 수 없습니다. 사용자는 Oracle Cloud Infrastructure를 사용하여 퍼블릭 버킷에서 객체를 다운로드할 수 있습니다. 따라서 PUT_OBJECT를 사용하여 객체를 Oracle Cloud Infrastructure 퍼블릭 버킷에 저장하려면 적합한 인증서로 인증서 이름을 제공해야 합니다.

자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오.

SYNC_EXTERNAL_PART_TABLE 프로시저

이 절차에서는 클라우드의 파일에서 외부 분할 테이블 업데이트를 간소화합니다. 새 분할 영역이 추가되거나 외부 분할 테이블에 대한 객체 저장소 소스에서 분할 영역이 제거될 때마다 이 절차를 실행합니다.

구문

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

매개변수

매개변수 설명
table_name 대상 테이블의 이름입니다. DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE를 실행하기 전에 대상 테이블을 생성해야 합니다.
schema_name 대상 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, 대상 테이블이 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
update_columns

새 파일로 인해 스키마가 변경될 수 있습니다. 새 열, 삭제된 열이 지원됩니다. 기존 열에 대한 갱신(예: 데이터 유형 변경 시 오류 발생)

기본값: False

VALIDATE_EXTERNAL_PART_TABLE 프로시저

이 프로시저는 외부 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
operation_id 이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.
partition_name 정의된 경우 특정 분할 영역만 검증됩니다. 지정되지 않은 경우 rowcount에 도달할 때까지 모든 분할 영역을 순차적으로 읽습니다.
subpartition_name 정의된 경우 특정 서브 분할 영역만 검증됩니다. 지정하지 않을 경우 rowcount에 도달할 때까지 모든 외부 분할 영역 또는 하위 분할 영역에서 순차적으로 읽습니다.
schema_name 외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
rowcount 스캔할 행 수. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.
partition_key_validation 내부 전용입니다. 이 파라미터는 사용하지 마십시오.
stop_on_error 행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE입니다. 즉, 첫번째 거부된 행에서 검증이 정지됩니다. 값을 FALSE로 설정하면 검증이 첫번째 거부된 행에서 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.

VALIDATE_EXTERNAL_TABLE 프로시저

이 프로시저는 외부 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 외부 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
operation_id 이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.
schema_name 외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
rowcount 스캔할 행 수. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.
stop_on_error

행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE입니다. 즉, 첫번째 거부된 행에서 검증이 정지됩니다. 값을 FALSE로 설정하면 검증이 첫번째 거부된 행에서 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.

External Table이 Avro, ORC 또는 Parquet 파일을 참조하면 첫 번째 거부된 행에서 검증이 중지됩니다.

외부 테이블에서 avro, orc 또는 parquet 값으로 설정된 format 매개변수 type를 지정하는 경우 stop_on_error 매개변수의 값은 항상 TRUE입니다. 따라서 테이블 badfile은 Avro, ORC 또는 Parquet 파일을 참조하는 외부 테이블에 대해 항상 비어 있습니다.

사용 노트

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE는 분할된 외부 테이블과 하이브리드 분할 테이블 모두에서 작동합니다. 이 경우 rowcount에 도달하거나 stop_on_error가 적용될 때까지 모든 외부 분할 영역에서 데이터를 읽을 수 있습니다. 어떤 분할 영역 또는 분할 영역의 일부가 어떤 순서로 읽혀지는지에 대한 제어 권한이 없습니다.

VALIDATE_HYBRID_PART_TABLE 프로시저

이 절차에서는 하이브리드 분할 테이블에 대한 소스 파일을 검증하고, 로그 정보를 생성하고, 하이브리드 테이블에 대해 지정된 형식 옵션과 일치하지 않는 행을 자율운영 AI 데이터베이스의 badfile 테이블에 저장합니다. 오버로드된 폼을 사용하여 operation_id 매개변수를 사용할 수 있습니다.

구문

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);
DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

매개변수

매개변수 설명
table_name 외부 테이블의 이름입니다.
operation_id 이 매개변수를 사용하여 로드 작업의 진행률 및 최종 상태를 USER_LOAD_OPERATIONS 뷰의 해당 ID로 추적할 수 있습니다.
partition_name 정의된 경우 특정 분할 영역만 검증됩니다. 지정하지 않을 경우 rowcount에 도달할 때까지 모든 외부 분할 영역에서 순차적으로 읽습니다.
subpartition_name 정의된 경우 특정 서브 분할 영역만 검증됩니다. 지정하지 않을 경우 rowcount에 도달할 때까지 모든 외부 분할 영역 또는 하위 분할 영역에서 순차적으로 읽습니다.
schema_name 외부 테이블이 상주하는 스키마의 이름입니다. 기본값은 NULL입니다. 즉, External Table은 프로시저를 실행하는 유저와 동일한 스키마에 있습니다.
rowcount 스캔할 행 수. 기본값은 NULL입니다. 즉, 소스 파일의 모든 행이 스캔됩니다.
partition_key_validation 내부 전용입니다. 이 파라미터는 사용하지 마십시오.
stop_on_error 행이 거부될 때 검증이 정지되어야 하는지 여부를 결정합니다. 기본값은 TRUE입니다. 즉, 첫번째 거부된 행에서 검증이 정지됩니다. 값을 FALSE로 설정하면 검증이 첫번째 거부된 행에서 정지되지 않고 rowcount 매개변수에 대해 지정된 값까지 모든 행을 검증합니다.

관련 콘텐츠