SnowConvert AI – Oracle – XML-Typen¶
Beschreibung¶
Extensible Markup Language (XML) ist ein Standardformat, das vom World Wide Web Consortium (W3C) zur Darstellung strukturierter und unstrukturierter Daten im Web entwickelt wurde. Universelle Ressourcenbezeichner (URIs) identifizieren Ressourcen wie Webseiten überall im Web. Oracle bietet Typen zur Verarbeitung von XML und URI-Daten sowie eine Klasse von URIs namens
DBURIRef-Typen für den Zugriff auf Daten, die in der Datenbank selbst gespeichert sind. (Oracle SQL-Sprachreferenz – XML-Typen)
URIFactory-Paket¶
Beschreibung¶
Oracle stellt auch das Paket
URIFactoryzur Verfügung, das Instanzen der verschiedenen Subtypen desURITypeserstellen und zurückgeben kann. Das Paket analysiert die URL-Zeichenfolge, identifiziert den Typ von URL (HTTP,DBURI, und so weiter) und erstellt eine Instanz des Subtyps. (Oracle SQL Language Reference URIFactory Package)
URIFactory enthält die folgenden Unterprogramme:
GETURI¶
Oracle¶
SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
Ergebnis¶
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;
Ergebnis¶
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;
Ergebnis¶
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://');
Bekannte Probleme¶
1. Unterprogramme des URIFactory-Pakets werden nicht erkannt
SnowConvert AI transformiert keine Unterprogramme von integrierten Paketen. Die meisten Funktionalitäten von URI-Typen werden von Snowflake derzeit nicht unterstützt.
2. Fehlende EWIs für URIFactory-Paket
Der Ausgabecode sollte eine EWI anzeigen, der darauf hinweist, dass einige Funktionen von Snowflake nicht unterstützt werden. Es gibt ein Work-Element zur Behebung dieses Problems.
XMLType¶
Beschreibung¶
Dieser von Oracle bereitgestellte Typ kann zum Speichern und Abfragen von XML-Daten in der Datenbank verwendet werden.
XMLTypeverfügt über Elementarfunktionen, mit denen Sie auf XML-Daten zugreifen, sie extrahieren und mit XPath-Ausdrücken abfragen können. (Oracle SQL Language Reference XML Data Type)
Snowflake verarbeitet semistrukturierte Daten (einschließlich XMLTYPE) unter Verwendung des Datentyps VARIANT. Aus diesem Grund muss XMLTYPEs auf VARIANT migriert werden, und anschließend müssen die Verwendungen von Funktionen zur Manipulation und Abfrage von XML auf die Gegenstücke von Snowflake migriert werden. Weitere Informationen zur Verwendung von XML in Snowflake finden Sie in diesem Beitrag im Snowflake-Forum und in der Dokumentation zur Funktion TO_XML in Snowflake.
XMLTYPE
Beispielhafte Quellcode-Muster¶
XMLType in Create Table¶
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"}}'
;
Daten in die XML-Spalte einfügen¶
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>')
);
Bekannte Probleme¶
1. XMLType manipulation and query functions are not recognized¶
Die Funktionen zur Manipulation und Abfrage von XML wie XMLTYPE() werden von SnowConvert weder erkannt noch umgewandelt.
Zugehörige EWIs¶
SSC-EWI-0036: Datentyp wurde in einen anderen Datentyp konvertiert.
SSC-EWI-OR0016: XML wird nicht unterstützt.
URI-Datentypen¶
Beschreibung¶
Oracle stellt eine Familie von URI-Typen –
URIType,DBURIType,XDBURITypeundHTTPURIType– bereit, die durch eine Vererbungshierarchie verbunden sind.URITypeist ein Objekttyp, während die anderen Untertypen vonURITypesind. (Oracle SQL-Sprachreferenz – URI-Datentypen)
DBURIType¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
DBURITypekann verwendet werden, umDBURIRefWerte zu speichern, die auf Daten innerhalb der Datenbank verweisen. Durch das Speichern vonDBURIRefWerten können Sie auf Daten verweisen, die innerhalb oder außerhalb der Datenbank gespeichert sind, und konsistent auf die Daten zugreifen. (Oracle SQL Language Reference URI Data Types)
DBURIType
Beispielhafte Quellcode-Muster¶
Bemerkung
Informationen zum Einrichten der Beispieldatenbank finden Sie in diesem Abschnitt.
DBURIType in Create Table¶
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 ***/!!!
);
Abrufen von Daten aus der Spalte DBURIType¶
Oracle¶
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Ergebnis¶
DT.DB_URITYPE_COLUMN.GETCLOB() |
|---|
¶ <FIRST_NAME>Shelley</FIRST_NAME>¶ |
Diese Abfrage hat die Syntax XML, so wird sie angezeigt:
<?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;
Warnung
Die Funktion „getclob“ wird nicht vom Tool umgewandelt, ist aber notwendig, um die Daten in Oracle anzuzeigen. Diese Transformation wird in zukünftigen Versionen verfügbar sein.
Bekannte Probleme¶
1. DBURIType -Datentyp nicht erkannt
DBURIType wird von SnowConvert AI als benutzerdefinierter Datentyp analysiert und konvertiert oder als nicht unterstützter Typ, wenn dieser das Präfix SYS verwendet. Es gibt ein Work-Element, um dieses Problem zu beheben.
Zugehörige EWIs¶
SSC-EWI-0028: TYPE nicht unterstützt.
SSC-EWI-0062: Die Verwendung des benutzerdefinierten Typs wurde in den Variant-Typ geändert.
SSC-EWI-0073: Überprüfung auf gleichwertige Funktion ausstehend.
HTTPURIType¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Sie können
HTTPURITypeverwenden, um URLs auf externen Webseiten oder in Dateien zu speichern. Oracle greift auf diese Dateien über HTTP (Hypertext Transfer Protocol) zu. (Oracle SQL Language Reference URI Data Types)
HTTPURITYPE
Beispielhafte Quellcode-Muster¶
HTTPURIType in Create Table¶
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 ***/!!!
);
Abrufen von Daten aus der Spalte HTTPURIType¶
Oracle¶
SELECT
ut.http_uritype_column.getUrl(),
ut.http_uritype_column.getExternalUrl()
FROM
httpuritype_table ut;
Ergebnis¶
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;
Warnung
Die Funktionen getUrl und getExternalUrl werden vom Tool nicht umgewandelt, sind aber notwendig, um die Daten in Oracle anzuzeigen. Diese Transformation wird in zukünftigen Versionen verfügbar sein.
Bekannte Probleme¶
1. HTTPURIType -Datentyp nicht erkannt
HTTPURIType wird von SnowConvert AI als benutzerdefinierter Datentyp analysiert und konvertiert oder als nicht unterstützter Typ, wenn dieser das Präfix SYS verwendet. Es gibt ein Work-Element, um dieses Problem zu beheben.
Zugehörige EWIs¶
SSC-EWI-0028: TYPE nicht unterstützt.
SSC-EWI-0062: Die Verwendung des benutzerdefinierten Typs wurde in den Variant-Typ geändert.
SSC-EWI-0073: Überprüfung auf gleichwertige Funktion ausstehend.
XDBURIType¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Sie können
XDBURITypeverwenden, um Dokumente in der XML-Datenbankhierarchie als URIs darzustellen, die in jedeURIType-Spalte in einer Tabelle eingebettet werden können.XDBURITypebesteht aus einer URL, die den hierarchischen Namen des XML-Dokuments, auf das er verweist, und ein optionales Fragment enthält, das die XPath-Syntax darstellt. (Oracle SQL Language Reference URI Data Types)
XDBURITYPE
Beispielhafte Quellcode-Muster¶
XDBURIType in Create Table¶
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 ***/!!!
);
Abrufen von Daten aus der Spalte XDBURIType¶
Oracle¶
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Ergebnis¶
UT.XDB_URITYPE_COLUMN.GETCLOB() |
|---|
<emp_name>selby</emp_name> |
Diese Abfrage hat die Syntax XML, so wird sie angezeigt:
<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;
Warnung
Die Funktion „getclob“ wird nicht vom Tool umgewandelt, ist aber notwendig, um die Daten in Oracle anzuzeigen. Diese Transformation wird in zukünftigen Versionen verfügbar sein.
Bekannte Probleme¶
1. XDBURIType -Datentyp nicht erkannt
XDBURIType wird von SnowConvert AI als benutzerdefinierter Datentyp analysiert und konvertiert oder als nicht unterstützter Typ, wenn dieser das Präfix SYS verwendet. Es gibt ein Work-Element, um dieses Problem zu beheben.
Zugehörige EWIs¶
SSC-EWI-0028: TYPE nicht unterstützt.
SSC-EWI-0062: Die Verwendung des benutzerdefinierten Typs wurde in den Variant-Typ geändert.
SSC-EWI-0073: Überprüfung auf gleichwertige Funktion ausstehend.