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 は組み込みパッケージのサブプログラムを変換しません。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
サンプルソースパターン¶
テーブル作成時の 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¶
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 言語リファレンス 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¶
[SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。
SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました
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¶
[SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。
SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました。
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¶
[SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028) :型がサポートされていません。
SSC-EWI-0062: カスタム型の使用法がバリアントに変更されました
SSC-EWI-0073: 機能同等性レビューは保留中です