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;

結果

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://');

既知の問題

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

SnowConvert AI does not transform subprograms of built-in packages. Most of the functionality of URI types is not currently supported by 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

サンプルソースパターン

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

既知の問題

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

サンプルソースパターン

注釈

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

テーブル作成時の 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でデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

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

サンプルソースパターン

テーブル作成時の 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でデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

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

サンプルソースパターン

テーブル作成時の 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でデータを表示するために必要です。この変換は将来のリリースで利用可能になる予定です。

既知の問題

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: 機能同等性レビューは保留中です