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 DBURIRef pour 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 de URITypes. 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;
Copy

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

ESCAPEURI

Oracle

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

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

UNESCAPEURI

Oracle

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

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

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. XMLType possè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
Copy

Modèles d’échantillons de sources

XMLType dans Create table

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

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

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

  1. SSC-EWI-0036: Type de données converti en autre type de données.

  2. SSC-EWI-OR0016: XML is not supported.

Types de données URI

Description

Oracle fournit une famille de types URI—URIType, DBURIType, XDBURIType et HTTPURIType qui sont liées par une hiérarchie d’héritage. URIType est un type d’objet et les autres sont des sous-types de URIType. (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

DBURIType peut être utilisé pour stocker des valeurs DBURIRef, qui font référence à des données dans la base de données. Le stockage des valeurs DBURIRef vous 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

Copy

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

Récupération des données de la colonne DBURIType

Oracle
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Copy
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>
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

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

  1. SSC-EWI-0028: Type non pris en charge.

  2. SSC-EWI-0062: Custom type usage changed to variant

  3. 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 HTTPURIType pour 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

Copy

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

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

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

  1. SSC-EWI-0028: Type non pris en charge.

  2. SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.

  3. 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 XDBURIType pour 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 colonne URIType d’une table. XDBURIType se 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

Copy

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

Récupération des données de la colonne XDBURIType

Oracle
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Copy
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>
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

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

  1. SSC-EWI-0028: Type non pris en charge.

  2. SSC-EWI-0062: Custom type usage changed to variant

  3. SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente