SnowConvert AI - Oracle - Types XML¶
Description¶
XML (Extensible Markup Language ou langage de balisage extensible en français) est un format standard développé par W3C (Consortium World Web Consortium ) pour la représentation de données structurées et non structurées sur le Web. Les URIs (Universal Resource Identifier, Identifiant de Ressource Uniforme) identifient des ressources telles que des pages Web n’importe où sur le Web. Oracle fournit des types pour gérer les données XML et URI ainsi qu’une classe d’URIs appelés types
DBURIRefpour accéder aux données stockées dans la base de données elle-même. (Référence linguistique Oracle SQL Types XML).
Paquet URIFactory¶
Description¶
Oracle fournit également le paquet
URIFactory, qui peut créer et renvoyer des instances des différents sous-types deURITypes. Le paquetage analyse la chaîne URL, identifie le type d’URL (HTTP,DBURI, etc.) et crée une instance du sous-type. (Référence linguistique Oracle SQL Paquet URIFactory)
URIFactory contient les sous-programmes suivants :
GETURI¶
Oracle¶
SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
Résultat¶
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;
Résultat¶
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;
Résultat¶
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://');
Problèmes connus¶
1. Les sous-programmes du paquet URIFactory ne sont pas reconnus
SnowConvert AI ne transforme pas les sous- programmes de paquets intégrés. Le must de la fonctionnalité des types d’URI n’est actuellement pas pris en charge par Snowflake.
2. EWIs manquants pour le paquet URIFactory
Le code de sortie devrait afficher un EWI indiquant que certaines fonctionnalités ne sont pas prises en charge par Snowflake. Un élément de travail a été mis en place pour corriger ce problème.
XMLType¶
Description¶
Ce type fourni par Oracle peut être utilisé pour stocker et interroger les données XML dans la base de données.
XMLTypepossède des fonctions membres que vous pouvez utiliser pour accéder, extraire et interroger les données XML à l’aide d’expressions XPath. (Référence linguistique Oracle SQL Type de données XML)
Snowflake traite les types de données semi-structurées (y compris XMLTYPE) en utilisant le type de données VARIANT. C’est pourquoi les XMLTYPEs doivent être migrés vers VARIANT, puis les fonctions utilisées pour manipuler et interroger XML doivent être migrées vers les équivalents de Snowflake. Pour plus d’informations sur l’utilisation de XML dans Snowflake, reportez-vous à ce post dans le forum de Snowflake et à la documentation de la fonction TO_XML dans Snowflake.
XMLTYPE
Modèles d’échantillons de sources¶
XMLType dans 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"}}'
;
Insérer des données dans la colonne 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>')
);
Problèmes connus¶
1. XMLType manipulation and query functions are not recognized¶
Les fonctions de manipulation et de requête de XML telles que XMLTYPE() ne sont ni reconnues ni transformées par SnowConvert.
EWIs connexes¶
SSC-EWI-0036: Type de données converti en autre type de données.
SSC-EWI-OR0016: XML is not supported.
Types de données URI¶
Description¶
Oracle fournit une famille de types URI—
URIType,DBURIType,XDBURITypeetHTTPURITypequi sont liées par une hiérarchie d’héritage.URITypeest un type d’objet et les autres sont des sous-types deURIType. (Référence linguistique Oracle SQL Types de données URI).
DBURIType¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
DBURITypepeut être utilisé pour stocker des valeursDBURIRef, qui font référence à des données dans la base de données. Le stockage des valeursDBURIRefvous permet de faire référence à des données stockées à l’intérieur ou à l’extérieur de la base de données et d’accéder aux données de manière cohérente. (Référence linguistique Oracle SQL Types de données URI)
DBURIType
Modèles d’échantillons de sources¶
Note
Consultez cette section pour configurer la base de données exemple.
DBURIType dans 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 ***/!!!
);
Récupération des données de la colonne DBURIType¶
Oracle¶
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Résultat¶
DT.DB_URITYPE_COLUMN.GETCLOB() |
|---|
¶ <FIRST_NAME>Shelley</FIRST_NAME>¶ |
Cette requête de résultat a la syntaxe XML, voici comment elle est affichée :
<?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;
Avertissement
La fonction getclob n’est pas transformée par l’outil, mais elle est nécessaire pour afficher les données dans Oracle. Cette transformation sera disponible dans les prochaines versions.
Problèmes connus¶
1. Type de données DBURIType non reconnu
DBURIType est analysé et converti en type de données personnalisé par SnowConvert AI ou comme type non pris en charge s’il utilise le préfixe SYS, il existe un élément de travail pour résoudre ce problème
EWIs connexes¶
SSC-EWI-0028: Type non pris en charge.
SSC-EWI-0062: Custom type usage changed to variant
SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente
HTTPURIType¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Vous pouvez utiliser
HTTPURITypepour stocker les URLs vers des pages Web externes ou vers des fichiers. Oracle accède à ces fichiers en utilisant HTTP (Hypertext Transfer Protocol). (Référence linguistique Oracle SQL Types de données URI)
HTTPURITYPE
Modèles d’échantillons de sources¶
HTTPURIType dans 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 ***/!!!
);
Récupération des données de la colonne HTTPURIType¶
Oracle¶
SELECT
ut.http_uritype_column.getUrl(),
ut.http_uritype_column.getExternalUrl()
FROM
httpuritype_table ut;
Résultat¶
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;
Avertissement
Les fonctions getUrl et getExternalUrl ne sont pas transformées par l’outil, mais sont nécessaires pour afficher les données dans Oracle. Cette transformation sera disponible dans les prochaines versions.
Problèmes connus¶
1. Type de données HTTPURIType non reconnu
HTTPURIType est analysé et converti en type de données personnalisé par SnowConvert AI ou comme type non pris en charge s’il utilise le préfixe SYS, il existe un élément de travail pour résoudre ce problème
EWIs connexes¶
SSC-EWI-0028: Type non pris en charge.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente.
XDBURIType¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Vous pouvez utiliser
XDBURITypepour exposer des documents dans la hiérarchie de la base de données XML en tant qu’URIs qui peuvent être intégrées dans n’importe quelle colonneURITyped’une table.XDBURITypese compose d’une URL, qui comprend le nom hiérarchique du document XML auquel il se réfère et un fragment facultatif représentant la syntaxe XPath. (Référence linguistique Oracle SQL Types de données URI)
XDBURITYPE
Modèles d’échantillons de sources¶
XDBURIType dans 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 ***/!!!
);
Récupération des données de la colonne XDBURIType¶
Oracle¶
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Résultat¶
UT.XDB_URITYPE_COLUMN.GETCLOB() |
|---|
<emp_name>selby</emp_name> |
Cette requête de résultat a la syntaxe XML, voici comment elle est affichée :
<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;
Avertissement
La fonction getclob n’est pas transformée par l’outil, mais elle est nécessaire pour afficher les données dans Oracle. Cette transformation sera disponible dans les prochaines versions.
Problèmes connus¶
1. Type de données XDBURIType non reconnu
XDBURIType est analysé et converti en type de données personnalisé par SnowConvert AI ou comme type non pris en charge s’il utilise le préfixe SYS, il existe un élément de travail pour résoudre ce problème
EWIs connexes¶
SSC-EWI-0028: Type non pris en charge.
SSC-EWI-0062: Custom type usage changed to variant
SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente