SnowConvert AI - Oracle - XML 型

説明

Extensible Markup Language( XML )は、ワールドワイドウェブコンソーシアム( W3C )が開発した、ワールドワイドウェブ上の構造化データおよび非構造化データを表現するための標準フォーマットです。ユニバーサルリソース識別子( URIs )は、ウェブページなどのリソースをウェブ上のあらゆる場所で識別します。Oracleでは、 XML と URI のデータを処理する型を、データベース自体に格納されたデータにアクセスするための DBURIRef 型と呼ばれる URIs のクラスとして提供しています。( Oracle SQL 言語リファレンス XML 型

URIFactory パッケージ

説明

Oracleは URIFactory パッケージも提供しており、 URITypes のさまざまなサブタイプのインスタンスを生成して返すことができます。パッケージは URL 文字列を解析し、 URL (HTTP、 DBURI など)のタイプを識別し、サブタイプのインスタンスを作成します。(Oracle SQL 言語リファレンス URIFactory パッケージ)

URIFactory には以下のサブプログラムが含まれています。

GETURI

Oracle

SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
Copy

結果

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;
Copy

ESCAPEURI

Oracle

SELECT SYS.URIFACTORY.ESCAPEURI('http://www.<->') FROM dual;
Copy

結果

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;
Copy

UNESCAPEURI

Oracle

SELECT SYS.URIFACTORY.UNESCAPEURI('http://www.%24-%26-%3C-%3E-%3F') FROM dual;
Copy

結果

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;
Copy

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');
Copy

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');
Copy

UNREGISTERURLHANDLER

Oracle

CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Copy

Snowflake

CALL URIFACTORY.UNREGISTERURLHANDLER('sc://');
Copy

既知の問題

1.URIFactory パッケージのサブプログラムは認識されません

SnowConvert AI は組み込みパッケージのサブプログラムを変換しません。URI 型の機能のmustは、現在Snowflakeではサポートされていません。

2.URIFactory パッケージの欠落 EWIs

出力コードには、一部の機能がSnowflakeでサポートされていないことを示す EWI が表示されます。この問題を修正するための作業項目があります。

XMLType

説明

このOracle提供の型は、データベース内の XML データの保存とクエリに使用できます。XMLType には、 XPath 式を使用して XML データにアクセス、抽出、およびクエリするために使用できるメンバー関数があります。(Oracle SQL 言語リファレンス XML データ型)

Snowflakeは VARIANT データ型を使用して半構造化データ型(XMLTYPE を含む)を扱います。このため、 XMLTYPEs を VARIANT に移行し、 XML の操作とクエリに使用する関数の使用をSnowflakeの対応するものに移行する必要があります。Snowflakeでの XML の使用方法の詳細情報については、Snowflakeフォーラムの この投稿 およびSnowflakeの TO_XML 関数のドキュメントをご参照ください。

XMLTYPE
Copy

サンプルソースパターン

テーブル作成時の XMLType

Oracle
CREATE TABLE xml_table(
    xml_column XMLTYPE
);
Copy
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"}}'
    ;
Copy

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>')
);
Copy
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>')
);
Copy

既知の問題

1.XMLType 操作およびクエリ関数は認識されません

XMLTYPE()のような XML を操作したりクエリしたりするための関数は、 SnowConvert によって認識も変換もされていません。

関連 EWIs

  1. SSC-EWI-0036: データ型は別のデータ型に変換されます。

  2. SSC-EWI-OR0016: XML はサポートされていません。

URI データ型

説明

Oracle は URI 型のファミリー( URITypeDBURITypeXDBURIType および HTTPURIType )を提供します。これらは継承階層によって関連付けられています。 URIType はオブジェクト型で、他は URIType のサブタイプです。( Oracle SQL 言語リファレンス URI データ型

DBURIType

注釈

わかりやすくするため、出力コードの一部を省略しています。

説明

DBURIType は、 DBURIRef 値を格納するために使用できます。これは、データベース内のデータを参照します。DBURIRef 値を格納することで、データベースの内部または外部の格納データを参照し、そのデータに一貫してアクセスできるようになります。(Oracle SQL 言語リファレンス URI データ型)

DBURIType

Copy

サンプルソースパターン

注釈

このセクション をチェックして、サンプルデータベースを設定します。

テーブル作成時の 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 ')
);
Copy
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 ***/!!!
);
Copy

DBURIType 列からのデータの取得

Oracle
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Copy
結果

DT.DB_URITYPE_COLUMN.GETCLOB()

¶ <FIRST_NAME>Shelley</FIRST_NAME>¶

この結果クエリには XML 構文があり、次のように表示されます。

<?xml version="1.0"?>
 <FIRST_NAME>Shelley</FIRST_NAME>
Copy
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;
Copy

警告

getclob関数はツールによって変換されていませんが、Oracleでデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

1.DBURIType データ型が認識されません

DBURIType が解析され、 SnowConvert AI によってカスタムデータ型として変換されるか、プレフィックス SYS を使用している場合はサポートされていない型として変換されます。この問題を修正するための作業項目があります。

関連 EWIs

  1. [SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。

  2. SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました

  3. SSC-EWI-0073: 機能同等性レビューは保留中です

HTTPURIType

注釈

わかりやすくするため、出力コードの一部を省略しています。

説明

HTTPURIType を使って、外部のウェブページやファイルへの URLs を保存できます。Oracleは HTTP (ハイパーテキスト転送プロトコル)を使用してこれらのファイルにアクセスします。(Oracle SQL 言語リファレンス URI データ型)

HTTPURITYPE

Copy

サンプルソースパターン

テーブル作成時の 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')
);
Copy
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 ***/!!!
);
Copy

HTTPURIType 列からのデータの取得

Oracle
SELECT 
	ut.http_uritype_column.getUrl(),
	ut.http_uritype_column.getExternalUrl()
FROM 
	httpuritype_table ut;
Copy
結果

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;
Copy

警告

getUrlと getExternalUrl 関数はツールによって変換されていませんが、Oracleでデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

1.HTTPURIType データ型が認識されません

HTTPURIType が解析され、 SnowConvert AI によってカスタムデータ型として変換されるか、プレフィックス SYS を使用している場合はサポートされていない型として変換されます。この問題を修正するための作業項目があります。

関連 EWIs

  1. [SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。

  2. SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました。

  3. SSC-EWI-0073: 機能同等性レビューは保留中です。

XDBURIType

注釈

わかりやすくするため、出力コードの一部を省略しています。

説明

XDBURIType を使って、 XML データベース階層のドキュメントを、テーブルの URIType 列に埋め込むことができる URIs として公開することができます。XDBURIType は URL で構成され、これは参照先の XML ドキュメントの階層名と、 XPath の構文を表すオプションの断片で構成されます。(Oracle SQL 言語リファレンス URI データ型)

XDBURITYPE

Copy

サンプルソースパターン

テーブル作成時の 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')
);
Copy
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 ***/!!!
);
Copy

XDBURIType 列からのデータの取得

Oracle
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Copy
結果

UT.XDB_URITYPE_COLUMN.GETCLOB()

<emp_name>selby</emp_name>

この結果クエリには XML 構文があり、次のように表示されます。

<emp_name>selby</emp_name>
Copy
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;
Copy

警告

getclob関数はツールによって変換されていませんが、Oracleでデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

1.XDBURIType データ型が認識されません

XDBURIType が解析され、 SnowConvert AI によってカスタムデータ型として変換されるか、プレフィックス SYS を使用している場合はサポートされていない型として変換されます。この問題を修正するための作業項目があります。

関連 EWIs

  1. [SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。

  2. SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました

  3. SSC-EWI-0073: 機能同等性レビューは保留中です