SnowConvert AI Oracle – Tipos XML¶
Descrição¶
Extensible Markup Language (XML) é um formato padrão desenvolvido pelo Consortium da Web (W3C) para representar dados estruturados e não estruturados na Web. Identificadores de recursos universais (URIs) identificam recursos como páginas da web em qualquer lugar na da web. A Oracle fornece tipos para tratar dados XML e URI, bem como uma classe de URIs chamada tipos
DBURIRefpara acessar dados armazenados no próprio banco de dados. (Referência de linguagem Oracle SQL, Tipos XML)
Pacote URIFactory¶
Descrição¶
A Oracle também fornece o pacote
URIFactory, que pode criar e retornar instâncias dos vários subtipos do pacoteURITypes. O pacote analisa a cadeia de caracteres URL, identifica o tipo de URL (HTTP,DBURI, e assim por diante) e cria uma instância do subtipo. (Pacote URIFactory da referência de linguagem Oracle SQL)
URIFactory contém os seguintes subprogramas:
GETURI¶
Oracle¶
SELECT SYS.URIFACTORY.GETURI('http://localhost/').GETURL() FROM dual;
Resultado¶
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;
Resultado¶
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;
Resultado¶
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://');
Problemas conhecidos¶
1. Os subprogramas do pacote URIFactory não são reconhecidos
O SnowConvert AI não transforma subprogramas de pacotes internos. A maior parte da funcionalidade dos tipos URI URI atualmente não é compatível com o Snowflake.
2. EWIs Ausentes para o pacote URIFactory
O código de saída deve exibir um EWI indicando que algumas funcionalidades não são compatíveis com o Snowflake. Há um item de trabalho para corrigir esse problema.
XMLType¶
Descrição¶
Esse tipo fornecido pela Oracle pode ser usado para armazenar e consultar os dados XML no banco de dados. O
XMLTypetem funções de membro que podem ser usadas para acessar, extrair e consultar os dados XML usando expressões XPath. (Tipo de dados XML da referência de linguagem Oracle SQL)
O Snowflake lida com tipos de dados semiestruturados (incluindo XMLTYPE) usando o tipo de dados VARIANT. Por esse motivo, XMLTYPEs deve ser migrado para VARIANT e, em seguida, os usos das funções usadas para manipular e consultar XML devem ser migrados para as contrapartes do Snowflake. Para obter mais informações sobre como usar XML no Snowflake, consulte esta postagem no fórum do Snowflake e a documentação da função TO_XML no Snowflake.
XMLTYPE
Amostra de padrões da origem¶
XMLType em 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"}}'
;
Inserir dados na coluna 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>')
);
Problemas conhecidos¶
1. XMLType manipulation and query functions are not recognized¶
As funções para manipular e consultar XML, como XMLTYPE(), não estão sendo reconhecidas nem transformadas pelo SnowConvert.
EWIs relacionados¶
SSC-EWI-0036: Data type converted to another data type.
SSC-EWI-OR0016: XML is not supported.
Tipos de dados de URI¶
Descrição¶
A Oracle fornece uma família de tipos URI —
URIType,DBURIType,XDBURITypeeHTTPURIType– que estão relacionados por uma hierarquia de herança.URITypeé um tipo de objeto e os outros são subtipos deURIType. (Referência de linguagem Oracle SQL, Tipos de dados URI)
DBURIType¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
DBURITypepode ser usado para armazenar valoresDBURIRef, que fazem referência a dados dentro do banco de dados. O armazenamento de valoresDBURIRefpermite que você faça referência a dados armazenados dentro ou fora do banco de dados e acesse os dados de forma consistente. (Tipos de dados URI da referência de linguagem Oracle SQL)
DBURIType
Amostra de padrões da origem¶
Nota
Verifique esta seção para configurar o banco de dados de amostra.
DBURIType em 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 ***/!!!
);
Recuperação de dados da coluna DBURIType¶
Oracle¶
SELECT dt.db_uritype_column.getclob() FROM dburitype_table dt;
Resultado¶
DT.DB_URITYPE_COLUMN.GETCLOB() |
|---|
¶ <FIRST_NAME>Shelley</FIRST_NAME>¶ |
Essa consulta de resultados tem a sintaxe XML, e é assim que ela é exibida:
<?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;
Aviso
A função getclob não está sendo transformada pela ferramenta, mas é necessária para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.
Problemas conhecidos¶
1. DBURIType Tipo de dados não reconhecido
DBURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema
EWIs relacionados¶
SSC-EWI-0028: Tipo incompatível.
SSC-EWI-0062: Custom type usage changed to variant
SSC-EWI-0073: Pending functional equivalence review
HTTPURIType¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Você pode usar
HTTPURITypepara armazenar URLs em páginas da Web externas ou em arquivos. O Oracle acessa esses arquivos usando HTTP (Hypertext Transfer Protocol). (Tipos de dados URI da referência de linguagem Oracle SQL)
HTTPURITYPE
Amostra de padrões da origem¶
HTTPURIType em 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 ***/!!!
);
Recuperação de dados da coluna HTTPURIType¶
Oracle¶
SELECT
ut.http_uritype_column.getUrl(),
ut.http_uritype_column.getExternalUrl()
FROM
httpuritype_table ut;
Resultado¶
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;
Aviso
As funções getUrl e getExternalUrl não estão sendo transformadas pela ferramenta, mas são necessárias para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.
Problemas conhecidos¶
1. HTTPURIType Tipo de dados não reconhecido
HTTPURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema
EWIs relacionados¶
SSC-EWI-0028: Tipo incompatível.
SSC-EWI-0062: Custom type usage changed to variant.
SSC-EWI-0073: Pending functional equivalence review.
XDBURIType¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Você pode usar
XDBURITypepara expor documentos na hierarquia do banco de dados XML como URIs que podem ser incorporados em qualquer colunaURITypede uma tabela.XDBURITypeconsiste em um URL, que compreende o nome hierárquico do documento XML ao qual se refere e um fragmento opcional que representa a sintaxe XPath. (Tipos de dados URI da referência de linguagem Oracle SQL)
XDBURITYPE
Amostra de padrões da origem¶
XDBURIType em 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 ***/!!!
);
Recuperação de dados da coluna XDBURIType¶
Oracle¶
SELECT ut.xdb_uritype_column.getclob() FROM xdburitype_table ut;
Resultado¶
UT.XDB_URITYPE_COLUMN.GETCLOB() |
|---|
<emp_name>selby</emp_name> |
Essa consulta de resultados tem a sintaxe XML, e é assim que ela é exibida:
<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;
Aviso
A função getclob não está sendo transformada pela ferramenta, mas é necessária para exibir os dados no Oracle; essa transformação estará disponível em versões futuras.
Problemas conhecidos¶
1. XDBURIType Tipo de dados não reconhecido
XDBURIType é analisado e convertido como tipo de dados personalizado pelo SnowConvert AI ou como tipo não suportado se usar o prefixo SYS. Há um item de trabalho para corrigir esse problema
EWIs relacionados¶
SSC-EWI-0028: Tipo incompatível.
SSC-EWI-0062: Custom type usage changed to variant
SSC-EWI-0073: Pending functional equivalence review