클라우드에서 파일에서 데이터 로드
PL/SQL 패키지 DBMS_CLOUD는 클라우드의 파일에서 전용 Exadata 인프라의 자율운영 AI 데이터베이스에 생성된 테이블로 데이터를 로드할 수 있도록 지원합니다.
DBMS_CLOUD에서 제공하는 다음 PL/SQL 프로시저를 사용하여 다른 파일 형식에서 데이터를 로드할 수 있습니다.
-
DBMS_CLOUD.COPY_DATA프로시저를 사용하여 클라우드의 텍스트 파일 -
DBMS_CLOUD.COPY_TEXT프로시저를 사용하여 클라우드의 JSON 파일
파일에서 데이터를 로드하기 전에 다음 사항을 확인하십시오.
-
소스 파일은 클라이언트 컴퓨터에서 로컬 파일로 제공되거나 Oracle Cloud Infrastructure Object Storage와 같은 클라우드 기반 객체 저장소에 업로드되며 데이터 로드를 시도하는 데이터베이스 사용자가 액세스할 수 있습니다.
-
클라우드 오브젝트 스토리지 자격 증명은
DBMS_CLOUD.CREATE_CREDENTIAL절차를 사용하여 저장됩니다. 자세한 내용은 인증서 생성을 참조하십시오.
DBMS_CLOUD 패키지는 Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic, Azure Blob Storage 및 Amazon S3과 같은 클라우드 서비스의 파일에서 로드를 지원합니다.
인증서 생성
DBMS_CLOUD.CREATE_CREDENTIAL 절차를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장하는 방법을 알아봅니다.
SQL*Plus, SQL Developer 또는 Database Actions(웹 기반 SQL Developer 툴) 등의 데이터베이스 툴을 사용하여 DBMS_CLOUD.CREATE_CREDENTIAL 프로시저를 실행합니다. 예:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'adb_user@oracle.com',
password => 'password'
);
END;
/
username 및 password에 대해 제공하는 값은 사용 중인 클라우드 오브젝트 스토리지 서비스에 따라 달라집니다.
-
Oracle Cloud Infrastructure Object Storage:
username은 Oracle Cloud Infrastructure 사용자 이름이고password은 Oracle Cloud Infrastructure 인증 토큰입니다. 인증 토큰 작업을 참조하십시오. -
Oracle Cloud Infrastructure Object Storage Classic:
username은 Oracle Cloud Infrastructure Classic 사용자 이름이고password은 Oracle Cloud Infrastructure Classic 비밀번호입니다.
이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 임의의 이름을 사용할 수 있습니다. 이 단계는 객체 저장소 인증서가 변경되지 않는 한 한 한 번만 필요합니다. 인증서를 저장한 후 모든 데이터 로드에 대해 동일한 인증서 이름을 사용할 수 있습니다.
텍스트 파일에서 데이터 로드
DBMS_CLOUD.COPY_DATA 절차를 사용하여 클라우드의 텍스트 파일에서 자율운영 AI 데이터베이스로 데이터를 로드하는 방법을 알아봅니다.
이 예의 소스 파일인 channels.txt에는 다음 데이터가 있습니다.
S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
-
DBMS_CREDENTIAL.CREATE_CREDENTIAL절차를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장합니다. 자세한 내용은 인증서 생성을 참조하십시오.</span> -
데이터를 포함할 테이블을 생성합니다. 예:
CREATE TABLE CHANNELS (channel_id CHAR(1), channel_desc VARCHAR2(20), channel_class VARCHAR2(20) ); / -
DBMS_CLOUD.COPY_DATA프로시저를 사용하여 테이블로 데이터를 로드합니다. 예:BEGIN DBMS_CLOUD.COPY_DATA( table_name =>'CHANNELS', credential_name =>'DEF_CRED_NAME', file_uri_list =>'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/channels.txt', format => json_object('delimiter' value ',') ); END; /다음과 같은 매개변수가 있습니다.
-
table_name: 대상 테이블의 이름입니다. -
credential_name: 이전 단계에서 생성된 인증서의 이름입니다. -
file_uri_list: 로드할 소스 파일의 쉼표로 구분된 목록입니다.이 예에서
file_uri_list는us-phoenix-1영역의mybucket버킷에 있는channels.txt파일을 지정하는 Oracle Cloud Infrastructure Swift URI입니다. (idthydc0kinr는 버킷이 상주하는 오브젝트 스토리지 네임스페이스입니다.) 지원되는 URI 형식에 대한 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. -
format: 소스 파일의 형식을 설명하기 위해 지정하는 옵션을 정의합니다. 지정할 수 있는 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.
-
구분된 문서의 JSON 파일을 모음으로 로드
DBMS_CLOUD.COPY_DATA 프로시저를 사용하여 구분된 문서의 JSON 파일을 자율운영 AI 데이터베이스의 모음으로 로드하는 방법을 알아봅니다.
이 예에서는 행으로 구분된 파일에서 JSON 값을 로드하고 JSON 파일 myCollection.json을 사용합니다. 각 값, 각 라인은 자율운영 AI 데이터베이스의 모음에 단일 문서로 로드됩니다.
다음은 이러한 파일의 예입니다. 행당 하나의 객체가 있는 세 개의 행이 있습니다. 이러한 객체는 각각 별도의 JSON 문서로 로드됩니다.
{ "name" : "apple", "count": 20 }
{ "name" : "orange", "count": 42 }
{ "name" : "pear", "count": 10 }
절차
-
DBMS_CLOUD.CREATE_CREDENTIAL절차를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장합니다. 자세한 내용은 인증서 생성을 참조하십시오. -
DBMS_CLOUD.COPY_DATA프로시저를 사용하여 모음으로 데이터를 로드합니다. 예:BEGIN DBMS_CLOUD.COPY_COLLECTION( collection_name =>'fruit', credential_name =>'DEF_CRED_NAME', file_uri_list =>'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/fruit_bucket/o/myCollection.json', format => json_object('recorddelimiter' value '''\n''') ); END; /다음과 같은 매개변수가 있습니다.
-
collection_name: 대상 모음의 이름입니다. -
credential_name: 이전 단계에서 생성된 인증서의 이름입니다. -
file_uri_list: 로드할 소스 파일의 쉼표로 구분된 목록입니다.이 예에서
file_uri_list는us-phoenix-1영역의mybucket버킷에 있는myCollection.json파일을 지정하는 Oracle Cloud Infrastructure Swift URI입니다. 지원되는 URI 형식에 대한 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. -
format: 소스 파일의 형식을 설명하기 위해 지정하는 옵션을 정의합니다.characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray형식 옵션은 JSON 데이터 로드에 지원됩니다. 지정된 다른 형식은 오류가 발생합니다. 지정할 수 있는 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.
-
모음에 JSON 문서 배열 로드
DBMS_CLOUD.COPY_COLLECTION 프로시저를 사용하여 자율운영 AI 데이터베이스의 모음에 배열 JSON 문서를 로드하는 방법을 알아봅니다.
이 예에서는 JSON 파일 fruit_array.json을 사용합니다. 다음은 fruit_array.json 파일의 내용을 보여줍니다.
[{"name" : "apple", "count": 20 },
{"name" : "orange", "count": 42 },
{"name" : "pear", "count": 10 }]
절차
-
DBMS_CLOUD.CREATE_CREDENTIAL절차를 사용하여 클라우드 오브젝트 스토리지 인증서를 저장합니다. 자세한 내용은 인증서 생성을 참조하십시오. -
DBMS_CLOUD.COPY_DATA프로시저를 사용하여 모음으로 데이터를 로드합니다. 예:BEGIN DBMS_CLOUD.COPY_COLLECTION( collection_name => 'fruits', credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/json/o/fruit_array.json', format => '{"recorddelimiter" : "0x''01''", "unpackarrays" : "TRUE", "maxdocsize" : "10240000"}' ); END; /이 예에서는 전체 파일을 차지하는 단일 JSON 값을 로드합니다. 따라서 레코드 구분자를 지정할 필요가 없습니다. 레코드 구분자가 없음을 나타내려면 입력 파일에서 발생하지 않는 문자를 사용할 수 있습니다. 예를 들어,
"0x''01''"값은 JSON 텍스트에서 직접 발생하지 않으므로 사용할 수 있습니다.형식 값에 대한
unpackarrays매개변수가TRUE로 설정된 경우 문서 배열이 전체 배열이 아닌 개별 문서로 로드됩니다. 그러나 배열 요소의 압축 풀기는 단일 레벨로 제한됩니다. 문서에 중첩된 배열이 있는 경우 해당 배열의 압축이 풀리지 않습니다.다음과 같은 매개변수가 있습니다.
-
collection_name: 대상 모음의 이름입니다. -
credential_name: 이전 단계에서 생성된 인증서의 이름입니다. -
file_uri_list: 로드할 소스 파일의 쉼표로 구분된 목록입니다.이 예에서
file_uri_list는us-phoenix-1영역의mybucket버킷에 있는myCollection.json파일을 지정하는 Oracle Cloud Infrastructure Swift URI입니다. 지원되는 URI 형식에 대한 자세한 내용은 Cloud Object Storage URI 형식을 참조하십시오. -
format: 소스 파일의 형식을 설명하기 위해 지정하는 옵션을 정의합니다.characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray형식 옵션은 JSON 데이터 로드에 지원됩니다. 지정된 다른 형식은 오류가 발생합니다. 지정할 수 있는 형식 옵션에 대한 자세한 내용은 형식 매개변수를 참조하십시오.
unpackarrays형식 옵션을 사용하여fruit_array.json를DBMS_CLOUD.COPY_COLLECTION와 함께 로드하면 프로시저가 소스의 배열 값을 인식합니다. 따라서 데이터를 단일 문서로 로드하는 대신 기본적으로 데이터가 컬렉션fruits에 로드되고 배열의 각 값은 단일 문서로 로드됩니다. -
기존 테이블에 JSON 데이터 복사
DBMS_CLOUD.COPY_DATA를 사용하여 클라우드의 JSON 데이터를 테이블로 로드합니다.
이 예제의 소스 파일은 JSON 데이터 파일입니다.
절차
-
DBMS_CLOUD.CREATE_CREDENTIAL프로시저를 사용하여 객체 저장소 인증서를 저장합니다. 예:SET DEFINE OFF BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' ); END; /이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다. 인증서 이름에 임의의 이름을 사용할 수 있습니다. 이 단계는 객체 저장소 인증서가 변경되지 않는 한 한 한 번만 필요합니다. 인증서를 저장한 후 모든 데이터 로드에 대해 동일한 인증서 이름을 사용할 수 있습니다.
매개변수에 대한 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.
-
DBMS_CLOUD.COPY_DATA프로시저를 사용하여 JSON 데이터를 기존 테이블로 로드합니다.예:
CREATE TABLE WEATHER2 (WEATHER_STATION_ID VARCHAR2(20), WEATHER_STATION_NAME VARCHAR2(50)); / BEGIN DBMS_CLOUD.COPY_DATA( table_name => 'WEATHER2', credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/jsonfiles*', format => JSON_OBJECT('type' value 'json', 'columnpath' value '["$.WEATHER_STATION_ID", "$.WEATHER_STATION_NAME"]') ); END; /다음과 같은 매개변수가 있습니다.
-
table_name: 대상 테이블의 이름입니다. -
credential_name: 이전 단계에서 생성된 인증서의 이름입니다. -
file_uri_list: 로드할 소스 파일의 쉼표로 구분된 목록입니다. URI의 파일 이름에 와일드카드를 사용할 수 있습니다. "*" 문자는 여러 문자에 대한 와일드 카드 문자로서 사용할 수 있으며, "?" 문자는 단일 문자의 와일드 카드 문자로서 사용할 수 있으며, -
format: JSON 데이터가 있는DBMS_CLOUD.COPY_DATA의 경우type는json입니다. 다른 형식 값을 지정하여 JSON 소스 파일의 형식을 설명하는 옵션을 정의합니다. 자세한 내용은 DBMS_CLOUD Package Format Options을 참조하십시오.
이 예에서
namespace-string은 Oracle Cloud Infrastructure 오브젝트 스토리지 네임스페이스이고bucketname은 버킷 이름입니다. 자세한 내용은 객체 스토리지 네임스페이스 이해를 참조하십시오.매개변수에 대한 자세한 내용은 COPY_DATA 프로시저를 참조하십시오.
-
데이터 로드 모니터 및 문제 해결
PL/SQL 패키지 DBMS_CLOUD를 사용하여 수행된 모든 데이터 로드 작업은 dba_load_operations 및 user_load_operations 테이블에 기록됩니다.
-
dba_load_operations: 모든 로드 작업을 표시합니다. -
user_load_operations: 스키마의 로드 작업을 보여줍니다.
이러한 테이블을 query하여 진행 중인 데이터 로드와 완료된 데이터 로드에 대한 정보를 확인합니다. 예를 들어, TYPE 열에 WHERE 절 술어가 있는 SELECT 문을 사용하면 COPY 유형의 로드 작업이 표시됩니다.
SELECT table_name, owner_name, type, status, start_time, update_time, logfile_table, badfile_table
FROM user_load_operations WHERE type = 'COPY';
TABLE_NAME OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME LOGFILE_TABLE BADFILE_TABLE
---------- ----------- ------- ---------- ---------------------- --------------------- --------------- ------------- ------------- -------------
CHANNELS SH COPY COMPLETED 04-MAR-21 07.38.30.522711000 AM GMT 04-MAR-21 07.38.30.522711000 AM GMT COPY$1_LOG COPY$1_BAD
LOGFILE_TABLE 열에는 로드 작업의 로그를 확인하기 위해 질의할 수 있는 테이블의 이름이 표시됩니다. 예를 들어, 다음 질의는 로드 작업의 로그를 보여줍니다.
select * from COPY$21_LOG;
BADFILE_TABLE 열에는 로드 중 오류가 발생한 행을 확인하기 위해 질의할 수 있는 테이블의 이름이 표시됩니다. 예를 들어, 다음 질의는 로드 작업에 대해 거부된 레코드를 보여줍니다.
select * from COPY$21_BAD;
로그에 표시된 오류 및 지정된 BADFILE_TABLE 테이블에 표시된 행에 따라 DBMS_CLOUD.COPY_DATA에 올바른 형식 옵션을 지정하여 오류를 수정할 수 있습니다.
주: LOGFILE_TABLE 및 BADFILE_TABLE 테이블은 각 로드 작업에 대해 2일 동안 저장된 후 자동으로 제거됩니다.
dbms객체 및 파일용 클라우드.md#GUID-CEC0CA63-B77F-4D64-B70F-1E8476AE3ED6
user_load_operations 테이블 지우기에 대한 자세한 내용은 DELETE_ALL_OPERATIONS 프로시저를 참조하십시오.
확장 스칼라 값을 나타내는 텍스트 JSON 객체
고유 바이너리 JSON 데이터(OSON 형식)는 날짜와 같은 스칼라 유형을 SQL 유형에 해당하며 JSON 표준의 일부가 아닌 추가하여 JSON 언어를 확장합니다. 또한 Oracle Database는 이러한 비표준 값을 포함하여 JSON 스칼라 값을 표시하는 텍스트 JSON 객체 사용을 지원합니다.
이러한 확장된 객체를 포함하는 텍스트 JSON 데이터에서 고유 바이너리 JSON 데이터를 생성할 때 선택적으로 해당(고유 바이너리) JSON 스칼라 값으로 바꾸기할 수 있습니다.
확장 객체의 예는 {"$numberDecimal":31}입니다. 비표준 유형 십진수의 JSON 스칼라 값을 나타내며, 이와 같이 해석되는 경우 고유 이진 형식의 십진수로 바뀝니다.
예를 들어, JSON 데이터 유형 생성자 JSON를 사용하는 경우 EXTENDED 키워드를 사용하면 텍스트 입력에서 인식된 확장 객체가 고유 이진 JSON 결과의 해당 스칼라 값으로 바뀝니다. EXTENDED 키워드를 포함하지 않으면 이러한 대체가 발생하지 않습니다. 텍스트 확장 JSON 객체는 단순히 고유 이진 형식의 JSON 객체로 변환됩니다.
반대 방향에서 SQL/JSON 함수 json_serialize을 사용하여 바이너리 JSON 데이터를 텍스트 JSON 데이터(VARCHAR2, CLOB 또는 BLOB)로 직렬화하는 경우 EXTENDED 키워드를 사용하여 JSON 스칼라 값을 해당 텍스트 확장 JSON 객체로 바꿀 수 있습니다.
주: 사용하는 데이터베이스가 Oracle Autonomous AI Database인 경우 PL/SQL 프로시저 DBMS_CLOUD.copy_collection를 사용하여 Oracle NoSQL Database를 포함한 공통 NoSQL 데이터베이스에서 생성되는 것과 같은 JSON 데이터 파일에서 JSON 문서 모음을 생성할 수 있습니다.
ejson을 프로시저의 type 매개변수 값으로 사용하는 경우 입력 파일에서 인식된 확장 JSON 객체가 결과 고유 이진 JSON 모음의 해당 스칼라 값으로 바뀝니다. 다른 방향에서는 json_serialize 함수를 EXTENDED 키워드와 함께 사용하여 결과 텍스트 JSON 데이터에서 스칼라 값을 확장된 JSON 객체로 바꿀 수 있습니다.
확장 객체에 대한 두 가지 주요 사용 사례는 다음과 같습니다.
-
Exchange(가져오기/내보내기):
-
확장된 객체를 포함하는 기존 JSON 데이터를 어딘가에서 수집합니다.
-
네이티브 바이너리 JSON 데이터를 확장된 객체가 포함된 텍스트 JSON 데이터로 직렬화하여 데이터베이스 외부에서 사용할 수 있습니다.
-
-
고유 바이너리 JSON 데이터의 검사: 해당하는 확장 객체를 확인하여 보유한 항목을 확인합니다.
교환을 위해 Oracle NoSQL Database를 비롯한 공통 NoSQL 데이터베이스에서 생성된 파일에서 JSON 데이터를 수집하여 확장 객체를 고유 바이너리 JSON 스칼라로 변환할 수 있습니다. 다른 방향에서는 고유 바이너리 JSON 데이터를 텍스트 데이터로 익스포트하여 Oracle 특정 스칼라 JSON 값을 해당하는 텍스트 확장 JSON 객체로 바꿀 수 있습니다.
참고: 검사의 예로 네이티브 JSON 데이터를 직렬화한 결과 {"dob" : "2000-01-02T00:00:00"}과 같은 객체를 고려해 보십시오. "2000-01-02T00:00:00"은 날짜 유형의 고유 이진 값을 직렬화한 결과입니까, 아니면 고유 이진 값이 문자열입니까? EXTENDED 키워드와 함께 json_serialize를 사용하면 알 수 있습니다.
확장 객체 필드를 스칼라 JSON 유형에 매핑하는 것은 일반적으로 다대일입니다. 여러 종류의 확장 JSON 객체를 지정된 스칼라 값에 매핑할 수 있습니다. 예를 들어, 확장된 JSON 객체 {"$numberDecimal":"31"} 및 {"$numberLong:"31"}는 모두 JSON 언어 스칼라 유형 번호의 값 31로 변환되고, 항목 메소드 type()는 해당 JSON 스칼라 각각에 대해 "number"를 반환합니다.
항목 메소드 type()는 대상 값의 JSON 언어 스칼라 유형을 JSON 문자열로 보고합니다. 일부 스칼라 값은 동일한 스칼라 유형을 갖는 경우에도 내부적으로 구분할 수 있습니다. 일반적으로 json_serialize 함수(키워드 EXTENDED 포함)가 원래 확장된 JSON 객체를 재구성할 수 있습니다. 이러한 스칼라 값은 다양한 SQL 유형을 사용하여 구현하거나 확장된 JSON 객체 종류로 태그 지정하여 내부적으로 구별됩니다.
json_serialize가 원래 확장 JSON 객체를 재구성할 때 결과는 항상 원본과 텍스트로 동일하지는 않지만 항상 유사적으로 동등합니다. 예를 들어, 필드 값의 유형(문자열 및 숫자)이 다르더라도 {"$numberDecimal":"31"} 및 {"$numberDecimal":31}는 의미상 동일합니다. 동일한 내부 값으로 변환되며, 각 값은 $numberDecimal 확장 객체(동일한 태그)에서 파생되는 태그가 지정됩니다. 하지만 직렬화된 경우 모두에 대한 결과는 {"$numberDecimal":31}입니다. Oracle은 항상 필드 값에 가장 직접적으로 관련된 유형을 사용합니다. 이 경우 스칼라 유형 번호의 JSON 언어 값 31입니다.
다음 표에서는 사용된 다양한 유형의 서신을 보여줍니다. (1) 입력으로 사용되는 확장 객체 유형, (2) 항목 메소드 type()에서 보고되는 유형, (3) 내부적으로 사용되는 SQL 유형, (4) 함수 json_serialize에서 출력으로 사용되는 표준 JSON 언어 유형 및 (5) 키워드 EXTENDED가 지정된 경우 json_serialize에서 출력되는 확장 객체 유형에 매핑됩니다.
| 확장 객체 유형(입력) | Oracle JSON 스칼라 유형(type()으로 보고됨) | SQL 스칼라 유형 | 표준 JSON 스칼라 유형(출력) | 확장된 객체 유형(출력) |
|---|---|---|---|---|
$numberDouble(값이 JSON 숫자, 숫자를 나타내는 문자열 또는 다음 문자열 중 하나) "Infinity", "-Infinity", "Inf", "-Inf", "Nan"(각주 1 참조) |
double | BINARY_DOUBLE |
숫자 | "Inf", "-Inf", "Nan" 문자열 중 하나 또는 JSON 번호 값이 있는 $numberDouble(각주 2 참조) |
$numberFloat($numberDouble과 동일한 값 포함) |
float | BINARY_FLOAT |
숫자 | $numberFloat($numberDouble과 동일한 값 포함) |
$numberDecimal($numberDouble과 동일한 값 포함) |
숫자 | NUMBER |
숫자 | $numberDouble에 대한 값과 동일한 $numberDecimal |
부호 있는 32비트 정수 값 또는 숫자를 나타내는 문자열이 있는 $numberInt |
숫자 | NUMBER |
숫자 | $numberInt($numberDouble과 동일한 값 포함) |
JSON 번호 값 또는 숫자를 나타내는 문자열이 있는 $numberLong |
숫자 | NUMBER |
숫자 | $numberLong($numberDouble과 동일한 값 포함) |
다음 값 중 하나를 사용하는
값이 base-64 문자의 문자열인 경우 확장 객체에는 값이 0 또는 4인 |
바이너리 | BLOB 또는 RAW |
string 변환은 SQL 함수 |
다음 중 하나를 수행합니다.
|
값이 24 16진수 문자 문자열인 $oid |
바이너리 | RAW(12) |
string 변환은 SQL 함수 |
값이 24 16진수 문자 문자열인 $rawid |
$rawhex - 짝수 수의 16진수 문자를 포함하는 문자열 |
바이너리 | RAW |
string 변환은 SQL 함수 |
값이 base-64 문자 문자열인 $binary, 오른쪽이 = 문자로 채워짐 |
값이 24 또는 32 16진수 문자 문자열인 $rawid |
바이너리 | RAW |
string 변환은 SQL 함수 |
$rawid |
$oracleDate - ISO 8601 날짜 문자열 값 포함 |
날짜 | DATE |
string | $oracleDate - ISO 8601 날짜 문자열 값 포함 |
값이 ISO 8601 시간 기록 문자열인 $oracleTimestamp |
시간기록 | TIMESTAMP |
string | 값이 ISO 8601 시간 기록 문자열인 $oracleTimestamp |
$oracleTimestampTZ - 숫자 시간대 오프셋 또는 Z를 사용하는 ISO 8601 시간 기록 문자열 값 |
시간대가 포함된 시간 기록 | TIMESTAMP WITH TIME ZONE |
string | $oracleTimestampTZ - 숫자 시간대 오프셋 또는 Z를 사용하는 ISO 8601 시간 기록 문자열 값 |
|
시간대가 포함된 시간 기록 | TIMESTAMP WITH TIME ZONE |
string | $oracleTimestampTZ - 숫자 시간대 오프셋 또는 Z를 사용하는 ISO 8601 시간 기록 문자열 값 |
$intervalDaySecond - SQL 함수 to_dsinterval에 대해 지정된 ISO 8601 간격 문자열 값 |
일 단위 간격 | INTERVAL DAY TO SECOND |
string | $intervalDaySecond - SQL 함수 to_dsinterval에 대해 지정된 ISO 8601 간격 문자열 값 |
$intervalYearMonth - SQL 함수 to_yminterval에 대해 지정된 ISO 8601 간격 문자열 값 |
연도월간 | INTERVAL YEAR TO MONTH |
string | $intervalYearMonth - SQL 함수 to_yminterval에 대해 지정된 ISO 8601 간격 문자열 값 |
두 개의 필드:
|
벡터 | VECTOR |
숫자 배열 | 두 개의 필드:
|
각주 1 문자열 값은 대소문자를 구분하지 않고 해석됩니다. 예를 들어, "NAN" "nan" 및 "nAn"는 수락되고 이에 상응하며 유사하게 "INF", "inFinity" 및 "iNf"입니다. 무한히 큰("Infinity" 또는 "Inf") 및 작은("-Infinity" 또는 "-Inf") 숫자는 전체 단어 또는 약어로 허용됩니다.
각주 2 출력에서는 이러한 문자열 값만 사용됩니다. 전체 단어 무한도 또는 대소문자 변형이 없습니다.