SnowConvert AI - Oracle - XML 유형¶
설명¶
확장 가능 마크업 언어(XML)는 World Wide Web에서 정형 데이터와 비정형 데이터를 나타내기 위해 World Wide Web Consortium(W3C)에서 개발한 표준 형식입니다. 범용 리소스 식별자(URIs)는 웹의 어디에서나 웹 페이지와 같은 리소스를 식별합니다. Oracle은 XML 및 URI 데이터를 처리하기 위한 유형을 제공하며, 데이터베이스 자체에 저장된 데이터에 액세스하기 위해
DBURIRef유형이라는 URIs 클래스도 제공합니다.(Oracle SQL 언어 참조 XML 유형)
URIFactory 패키지¶
설명¶
또한 Oracle은
URITypes의 다양한 하위 유형의 인스턴스를 생성하고 반환할 수 있는URIFactory패키지를 제공합니다. 패키지는 URL 문자열을 분석하여 URL 의 유형(HTTP,DBURI등)을 식별하고 하위 유형의 인스턴스를 생성합니다. (Oracle SQL Language Reference URIFactory 패키지)
URIFactory 에는 다음과 같은 하위 프로그램이 포함되어 있습니다.
GETURI¶
Oracle¶
SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
결과¶
SYS.URIFACTORY.GETURI(‘HTTP://LOCALHOST/’).GETURL() |
|---|
http://localhost/ |
Snowflake¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.GETURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS GETURI.GETURL() FROM dual;
ESCAPEURI¶
Oracle¶
SELECT SYS.URIFACTORY.ESCAPEURI('http://www.<->') FROM dual;
결과¶
SYS.URIFACTORY.ESCAPEURI(‘HTTP://WWW.<->’) |
|---|
http://www.%3C-%3E |
Snowflake¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.ESCAPEURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS ESCAPEURI
FROM dual;
UNESCAPEURI¶
Oracle¶
SELECT SYS.URIFACTORY.UNESCAPEURI('http://www.%24-%26-%3C-%3E-%3F') FROM dual;
결과¶
SYS.URIFACTORY.UNESCAPEURI(‘HTTP://WWW.%24-%26-%3C-%3E-%3F’) |
|---|
http://www.$-&-<->-? |
Snowflake¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'SYS.URIFACTORY.UNESCAPEURI' IS NOT CURRENTLY SUPPORTED. ***/!!!
'' AS UNESCAPEURI
FROM dual;
REGISTERURLHANDLER¶
Oracle¶
CREATE TABLE url_table (urlcol varchar2(80));
INSERT INTO url_table VALUES ('http://www.google.com/');
CREATE OR REPLACE TYPE SCURIType UNDER SYS.URIType (
OVERRIDING MEMBER FUNCTION getClob RETURN CLOB,
OVERRIDING MEMBER FUNCTION getBlob RETURN BLOB,
OVERRIDING MEMBER FUNCTION getExternalURL RETURN VARCHAR2,
OVERRIDING MEMBER FUNCTION getURI RETURN VARCHAR2,
STATIC FUNCTION createURI(url IN VARCHAR2) RETURN SCURIType);
/
CALL URIFACTORY.REGISTERURLHANDLER('sc://','HR','SCURITYPE');
INSERT INTO url_table VALUES ('SC://company1/company2=22/comp');
Snowflake¶
CREATE OR REPLACE TABLE url_table (urlcol VARCHAR(80))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
INSERT INTO url_table
VALUES ('http://www.google.com/');
--!!!RESOLVE EWI!!! /*** SSC-EWI-OR0007 - CREATE TYPE SUBTYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
--CREATE OR REPLACE TYPE SCURIType UNDER SYS.URIType (
-- OVERRIDING MEMBER FUNCTION getClob RETURN CLOB,
-- OVERRIDING MEMBER FUNCTION getBlob RETURN BLOB,
-- OVERRIDING MEMBER FUNCTION getExternalURL RETURN VARCHAR2,
-- OVERRIDING MEMBER FUNCTION getURI RETURN VARCHAR2,
-- STATIC FUNCTION createURI(url IN VARCHAR2) RETURN SCURIType)
;
CALL URIFACTORY.REGISTERURLHANDLER('sc://','HR','SCURITYPE');
INSERT INTO url_table
VALUES ('SC://company1/company2=22/comp');
UNREGISTERURLHANDLER¶
Oracle¶
CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Snowflake¶
CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Known Issues¶
1. URIFactory 패키지의 하위 프로그램은 인식되지 않습니다
SnowConvert AI는 기본 제공 패키지의 하위 프로그램을 변환하지 않습니다. URI 유형의 기능 중 일부는 현재 Snowflake에서 지원되지 않습니다.
2. URIFactory 패키지에 누락된 EWIs
출력 코드에 EWI 가 표시되어 일부 기능이 Snowflake에서 지원되지 않음을 나타냅니다. 이 문제를 수정하기 위한 작업 항목이 있습니다.
XMLType¶
설명¶
이 Oracle 제공 타입은 데이터베이스에 XML 데이터를 저장하고 쿼리하는 데 사용할 수 있습니다.
XMLType에는 XPath 식을 사용하여 XML 데이터에 액세스, 추출 및 쿼리하는 데 사용할 수 있는 멤버 함수가 있습니다. (Oracle SQL Language Reference XML 데이터 타입)
Snowflake는 VARIANT 데이터 타입을 사용하여 반정형 데이터 타입(XMLTYPE)을 처리하므로 XMLTYPEs 을 VARIANT 로 마이그레이션해야 하며, XML 을 조작하고 쿼리하는 데 사용되는 함수의 사용은 Snowflake의 해당 함수로 마이그레이션해야 합니다. Snowflake에서 XML 사용 방법에 대한 자세한 내용은 Snowflake 포럼의 이 게시물 및 Snowflake의 TO_XML 함수 설명서를 참조하십시오.
XMLTYPE
샘플 소스 패턴¶
Create Table의 XMLType¶
Oracle¶
CREATE TABLE xml_table(
xml_column XMLTYPE
);
Snowflake¶
CREATE OR REPLACE TABLE xml_table (
xml_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XMLTYPE DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
XML 열에 데이터 삽입¶
Oracle¶
INSERT INTO xml_table VALUES(
XMLType(
'<?xml version="1.0"?>
<note>
<to>SnowConvert AI</to>
<from>Oracle</from>
<heading>Greeting</heading>
<body>Hello there!</body>
</note>')
);
Snowflake¶
INSERT INTO xml_table
VALUES(
!!!RESOLVE EWI!!! /*** SSC-EWI-OR0016 - FUNCTION RELATED WITH XML NOT SUPPORTED ***/!!!
XMLType(
'<?xml version="1.0"?>
<note>
<to>SnowConvert AI</to>
<from>Oracle</from>
<heading>Greeting</heading>
<body>Hello there!</body>
</note>')
);
Known Issues¶
1. XMLType manipulation and query functions are not recognized¶
XMLTYPE()와 같은 XML 을 조작하고 쿼리하는 함수는 SnowConvert 에서 인식하거나 변환하지 않습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
SSC-EWI-OR0016: XML은 지원되지 않습니다.
URI 데이터 타입¶
설명¶
Oracle은 상속 계층 구조로 연관된 URI 유형(
URIType,DBURIType,XDBURIType,HTTPURIType) 제품군을 제공합니다.URIType은 오브젝트 유형이고 다른 유형은URIType의 하위 유형입니다.(Oracle SQL 언어 참조 URI 데이터 타입)
DBURIType¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
DBURIType은 데이터베이스 내부의 데이터를 참조하는DBURIRef값을 저장하는 데 사용할 수 있습니다.DBURIRef값을 저장하면 데이터베이스 내부 또는 외부에 저장된 데이터를 참조하고 일관되게 데이터에 액세스할 수 있습니다. (Oracle SQL Language Reference URI 데이터 타입)
DBURIType
샘플 소스 패턴¶
참고
이 섹션을 확인하여 샘플 데이터베이스를 설정합니다.
Create Table의 DBURIType¶
Oracle¶
CREATE TABLE dburitype_table(
db_uritype_column DBURITYPE,
sys_db_uritype_column SYS.DBURITYPE
);
INSERT INTO dburitype_table (db_uritype_column) VALUES (
dburitype.createUri('/HR/EMPLOYEES/ROW[EMPLOYEE_ID=205]/FIRST_NAME ')
);
Snowflake¶
CREATE OR REPLACE TABLE dburitype_table (
db_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'DBURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
sys_db_uritype_column SYS.DBURITYPE
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE VIEW PUBLIC.dburitype_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
AS
SELECT
db_uritype_column,
sys_db_uritype_column
FROM
dburitype_table;
INSERT INTO dburitype_table(db_uritype_column) VALUES (
dburitype.createUri('/HR/EMPLOYEES/ROW[EMPLOYEE_ID=205]/FIRST_NAME ') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'dburitype.createUri' NODE ***/!!!
);
DBURIType 열에서 데이터 검색하기¶
Oracle¶
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
결과¶
DT.DB_URITYPE_COLUMN.GETCLOB() |
|---|
¶ <FIRST_NAME>Shelley</FIRST_NAME>¶ |
이 결과 쿼리의 구문은 XML 이며, 표시되는 방식은 다음과 같습니다.
<?xml version="1.0"?>
<FIRST_NAME>Shelley</FIRST_NAME>
Snowflake¶
SELECT dt.db_uritype_column.getclob() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'dt.db_uritype_column.getclob' NODE ***/!!! FROM
dburitype_table dt;
경고
getclob 함수는 도구에서 변환되지 않지만 Oracle에서 데이터를 표시하는 데 필요하며, 이 변환은 향후 릴리스에서 제공될 예정입니다.
Known Issues¶
1. DBURIType 데이터 타입은 인식되지 않음
DBURIType은 SnowConvert AI에 의해 사용자 지정 데이터 타입으로 구문 분석되고 변환되거나 SYS 접두사를 사용하는 경우 지원되지 않는 유형으로 변환됩니다. 이 문제를 해결하기 위한 작업 항목이 있습니다.
관련 EWIs¶
SSC-EWI-0028: 유형은 지원되지 않습니다.
SSC-EWI-0062: 사용자 지정 유형 사용법이 베리언트로 변경됨
SSC-EWI-0073: 기능적 동등성 검토 보류 중
HTTPURIType¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
HTTPURIType을 사용하여 URLs 을 외부 웹 페이지 또는 파일에 저장할 수 있습니다. Oracle은 HTTP (하이퍼텍스트 전송 프로토콜)을 사용하여 이러한 파일에 액세스합니다. (Oracle SQL Language Reference URI 데이터 타입)
HTTPURITYPE
샘플 소스 패턴¶
Create Table의 HTTPURIType¶
Oracle¶
CREATE TABLE httpuritype_table(
http_uritype_column HTTPURITYPE,
sys_http_uritype_column SYS.HTTPURITYPE
);
INSERT INTO httpuritype_table (http_uritype_column) VALUES(
HTTPURITYPE.createuri('http://localhost/')
);
INSERT INTO httpuritype_table (http_uritype_column) VALUES(
HTTPURITYPE.createuri('www.google.com')
);
Snowflake¶
CREATE OR REPLACE TABLE httpuritype_table (
http_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'HTTPURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
sys_http_uritype_column SYS.HTTPURITYPE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
;
CREATE OR REPLACE VIEW PUBLIC.httpuritype_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
AS
SELECT
http_uritype_column,
sys_http_uritype_column
FROM
httpuritype_table;
INSERT INTO httpuritype_table(http_uritype_column) VALUES(
HTTPURITYPE.createuri('http://localhost/') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'HTTPURITYPE.createuri' NODE ***/!!!
);
INSERT INTO httpuritype_table(http_uritype_column) VALUES(
HTTPURITYPE.createuri('www.google.com') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'HTTPURITYPE.createuri' NODE ***/!!!
);
HTTPURIType 열에서 데이터 검색하기¶
Oracle¶
SELECT
ut.http_uritype_column.getUrl(),
ut.http_uritype_column.getExternalUrl()
FROM
httpuritype_table ut;
결과¶
UT.HTTP_URITYPE_COLUMN.GETURL() |
UT.HTTP_URITYPE_COLUMN.GETEXTERNALURL() |
|---|---|
http://localhost/ |
http://localhost/ |
http://www.google.com |
http://www.google.com |
Snowflake¶
SELECT
ut.http_uritype_column.getUrl() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.http_uritype_column.getUrl' NODE ***/!!!,
ut.http_uritype_column.getExternalUrl() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.http_uritype_column.getExternalUrl' NODE ***/!!!
FROM
httpuritype_table ut;
경고
getUrl 및 getExternalUrl 함수는 도구에서 변환되지 않지만 Oracle에서 데이터를 표시하는 데 필요하며, 이 변환은 향후 릴리스에서 사용할 수 있습니다.
Known Issues¶
1. HTTPURIType 데이터 타입은 인식되지 않음
HTTPURIType은 SnowConvert AI에 의해 사용자 지정 데이터 타입으로 구문 분석되고 변환되거나 SYS 접두사를 사용하는 경우 지원되지 않는 유형으로 변환됩니다. 이 문제를 해결하기 위한 작업 항목이 있습니다.
관련 EWIs¶
SSC-EWI-0028: 유형은 지원되지 않습니다.
SSC-EWI-0062: 사용자 지정 유형 사용법이 베리언트로 변경되었습니다.
SSC-EWI-0073: 기능적 동등성 검토가 보류 중입니다.
XDBURIType¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
XDBURIType을 사용하여 XML 데이터베이스 계층 구조의 문서를 URIs 로 노출하여 테이블의 모든URIType열에 임베드할 수 있습니다.XDBURIType은 참조하는 XML 문서의 계층적 이름과 XPath 구문을 나타내는 선택적 조각으로 구성된 URL 로 구성됩니다. (Oracle SQL Language Reference URI 데이터 타입)
XDBURITYPE
샘플 소스 패턴¶
Create Table의 XDBURIType¶
Oracle¶
CREATE TABLE xdburitype_table(
xdb_uritype_column XDBURITYPE,
sys_xdb_uritype_column SYS.XDBURITYPE
);
INSERT INTO xdburitype_table (xdb_uritype_column) VALUES(
xdburitype('/home/OE/employees/emp_selby.xml')
);
Snowflake¶
CREATE OR REPLACE TABLE xdburitype_table (
xdb_uritype_column VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0062 - CUSTOM TYPE 'XDBURITYPE' USAGE CHANGED TO VARIANT ***/!!!,
!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
sys_xdb_uritype_column SYS.XDBURITYPE
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
CREATE OR REPLACE VIEW PUBLIC.xdburitype_table_view
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "oracle", "convertedOn": "" }}'
AS
SELECT
xdb_uritype_column,
sys_xdb_uritype_column
FROM
xdburitype_table;
INSERT INTO xdburitype_table(xdb_uritype_column) VALUES(
xdburitype('/home/OE/employees/emp_selby.xml') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'xdburitype' NODE ***/!!!
);
XDBURIType 열에서 데이터 검색하기¶
Oracle¶
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
결과¶
UT.XDB_URITYPE_COLUMN.GETCLOB() |
|---|
<emp_name>selby</emp_name> |
이 결과 쿼리의 구문은 XML 이며, 표시되는 방식은 다음과 같습니다.
<emp_name>selby</emp_name>
Snowflake¶
SELECT ut.xdb_uritype_column.getclob() !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ut.xdb_uritype_column.getclob' NODE ***/!!! FROM
xdburitype_table ut;
경고
getclob 함수는 도구에서 변환되지 않지만 Oracle에서 데이터를 표시하는 데 필요하며, 이 변환은 향후 릴리스에서 제공될 예정입니다.
Known Issues¶
1. XDBURIType 데이터 타입은 인식되지 않음
XDBURIType은 SnowConvert AI에 의해 사용자 지정 데이터 타입으로 구문 분석되고 변환되거나 SYS 접두사를 사용하는 경우 지원되지 않는 유형으로 변환됩니다. 이 문제를 해결하기 위한 작업 항목이 있습니다.
관련 EWIs¶
SSC-EWI-0028: 유형은 지원되지 않습니다.
SSC-EWI-0062: 사용자 지정 유형 사용법이 베리언트로 변경됨
SSC-EWI-0073: 기능적 동등성 검토 보류 중