- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 2 meses atrás por
fsitja.
-
AutorPosts
-
13 de janeiro de 2011 às 10:15 pm #97698
Maths
ParticipanteGalera, a duvida é meio complexo, estamos com um projeto aqui no serviço e estamos fazendo a analise e talz, e queria tirar uma duvida, É POSSIVEL o DATAMART receber um arquivo XML contendo campo de colunas e seus dados e transformar isso em informação dentro do banco??
Mais detalhado, pois é o seguinte, software eHealth vai gerar um arquivo XML, +/- assim:
blablabla
blablabla
blablabla
blablabla Este seria o arquivo XML, mas imenso… eu queria saber, o datamart pode receber um arquivo XML desse e converter as tags em colunas no banco e as informação dentro das tags?? O que eu disse tem logica e tem sentido, queria saber se ele aceita isso. Obrigado
13 de janeiro de 2011 às 11:27 pm #97701fsitja
ParticipanteOlá,
Você pode usar insert / select com as funções XMLTable e XMLQuery para “traduzir” o XML para um modelo relacional (ou ROLAP no seu caso?).
Se você puder postar um exemplo da estrutura do XML, contendo alguns dados, e do formato de tabela para o qual você quer traduzí-lo, dá para tentar ajudá-lo na tarefa.
Tem um exemplo no post abaixo que talvez ajude:
https://www.profissionaloracle.com.br/mo … t=xmltableNa documentação da Oracle tem mais exemplos e sintaxe das funções:
http://download.oracle.com/docs/cd/E118 … xquery.htm14 de janeiro de 2011 às 5:17 pm #97716Maths
Participante[quote=”fsitja”:w34g50cd]Olá,
Você pode usar insert / select com as funções XMLTable e XMLQuery para “traduzir” o XML para um modelo relacional (ou ROLAP no seu caso?).
Se você puder postar um exemplo da estrutura do XML, contendo alguns dados, e do formato de tabela para o qual você quer traduzí-lo, dá para tentar ajudá-lo na tarefa.
Tem um exemplo no post abaixo que talvez ajude:
https://www.profissionaloracle.com.br/mo … t=xmltableNa documentação da Oracle tem mais exemplos e sintaxe das funções:
http://download.oracle.com/docs/cd/E118 … xquery.htm[/quote]OTIMO!! FSITJA
Na verdade é o seguinte, estamos desenvolvendo o datamart, e iremos criar uma tabela dentro dele para receber os dados desse XML, uma das fontes de informaçoes que irao entrar no DATA MART será esse SCRIPT em XML entende?? E esse script precisa popular as colunas da tabela que criamos de acordo com as informaçoes do XML, abaixo tem um exemplo mais detalhado do script em XML.
Network Interface Card
0x10029f
5-Port 10/100/1000 Gigabit Switch
w/WebView
172.18.0.1
OTPRDSW01-link-100000
OTPRDSW01-link-100000
172.18.0.1
172.18.0.1SPECTRUM
172.18.0.1
15
Generic Lan/WanYes
Network Switch
3C:DF:1E:F8:C8:F1
0x10030f
5-Port 10/100/1000 Gigabit Switch w/WebView
172.18.0.1
OTPRDSW01-RH
OTPRDSW01-RH
172.18.0.1
172.18.0.1SPECTRUM
172.18.0.1
2
255.255.252.0
5
Generic Router/SwitchYes
Parece confuso mas nao é nada, é super simples.. pode perceber que cada tagzinha contem uma informação dentro, cada TAG seria uma coluna entende? as tags que nao tem informaçao dentro delas nao tem problema, sao apenas pq estao sem registro.. nesse caso eu tenho 2 registros no exemplo acima, pode ver que ele abre e fecha ci,ou seja essescript acima iria virar 2 registros na tabela entendeu??
14 de janeiro de 2011 às 8:25 pm #97722fsitja
ParticipanteEntão Maths, faça alguns testes com o exemplo abaixo por gentileza. Eu tive que incluir um no final do XML pois estava dando erro de parse nele, porque não havia sido fechada tag.
Para inserir esses dados basta embutir esse SQL num INSERT .. SELECT,
onde você pode manipular os dados normalmente como se estivessem numa tabela relacional, fazendo transformações, filtros de where, joins, etc.
Se tiver alguma coisa com problema pode mandar.
with xml_input as (
select xmltype(
'Network Interface Card
0x10029f
5-Port 10/100/1000 Gigabit Switch
w/WebView
172.18.0.1
OTPRDSW01-link-100000
OTPRDSW01-link-100000
172.18.0.1
172.18.0.1SPECTRUM
172.18.0.1
15
Generic Lan/WanYes
Network Switch
3C:DF:1E:F8:C8:F1
0x10030f
5-Port 10/100/1000 Gigabit Switch w/WebView
172.18.0.1
OTPRDSW01-RH
OTPRDSW01-RH
172.18.0.1
172.18.0.1SPECTRUM
172.18.0.1
2
255.255.252.0
5
Generic Router/SwitchYes
') xml_col from dual)
-- fim dos dados de teste
-- início da consulta aos dados do XML
select xt.*
from xml_input x,
xmltable('/GRLoader/ci'
passing x.xml_col
columns class varchar2(4000) path 'class',
mac_address varchar2(4000) path 'mac_address',
federated_asset_id varchar2(4000) path 'federated_asset_id',
description varchar2(4000) path 'description',
alarm_id varchar2(4000) path 'alarm_id',
name varchar2(4000) path 'name',
system_name varchar2(4000) path 'system_name',
ip_mgmt_addr varchar2(4000) path 'ip_mgmt_addr',
network_address varchar2(4000) path 'network_address',
gateway_id number(10) path 'gateway_id',
subnet_mask varchar2(4000) path 'subnet_mask',
number_ports number(10) path 'number_ports',
technology varchar2(4000) path 'technology',
host_name varchar2(4000) path 'host_name',
role varchar2(4000) path 'role'
) xt;
Segue a execução e o output:
SQL> with xml_input as (
2 select xmltype(
3 '
4
5
6 Network Interface Card
7
8 0x10029f
9 5-Port 10/100/1000 Gigabit Switch
10 w/WebView
11 172.18.0.1
12 OTPRDSW01-link-100000
13 OTPRDSW01-link-100000
14 172.18.0.1
15 172.18.0.1
16
17 SPECTRUM
18 172.18.0.1
19 1
20
21 5
22 Generic Lan/Wan
23
24 Yes
25
26
27
28 Network Switch
29 3C:DF:1E:F8:C8:F1
30 0x10030f
31 5-Port 10/100/1000 Gigabit Switch w/WebView
32 172.18.0.1
33 OTPRDSW01-RH
34 OTPRDSW01-RH
35 172.18.0.1
36 172.18.0.1
37
38 SPECTRUM
39 172.18.0.1
40 2
41 255.255.252.0
42 5
43 Generic Router/Switch
44
45 Yes
46
47 ') xml_col from dual)
48 -- fim dos dados de teste
49 -- início da consulta aos dados do XML
50 select xt.*
51 from xml_input x,
52 xmltable('/GRLoader/ci'
53 passing x.xml_col
54 columns class varchar2(4000) path 'class',
55 mac_address varchar2(4000) path 'mac_address',
56 federated_asset_id varchar2(4000) path 'federated_asset_id',
57 description varchar2(4000) path 'description',
58 alarm_id varchar2(4000) path 'alarm_id',
59 name varchar2(4000) path 'name',
60 system_name varchar2(4000) path 'system_name',
61 ip_mgmt_addr varchar2(4000) path 'ip_mgmt_addr',
62 network_address varchar2(4000) path 'network_address',
63 gateway_id number(10) path 'gateway_id',
64 subnet_mask varchar2(4000) path 'subnet_mask',
65 number_ports number(10) path 'number_ports',
66 technology varchar2(4000) path 'technology',
67 host_name varchar2(4000) path 'host_name',
68 role varchar2(4000) path 'role'
69 ) xt;CLASS MAC_ADDRESS FEDERATED_ASSET_ID DESCRIPTION ALARM_ID NAME
Network Interface Card 0x10029f 5-Port 10/100/1000 Gigabit Switch 172.18.0.1 OTPRDSW01-link-100000
w/WebViewNetwork Switch 3C:DF:1E:F8:C8:F1 0x10030f 5-Port 10/100/1000 Gigabit Switch w/WebView 172.18.0.1 OTPRDSW01-RH
SQL>
-
AutorPosts
- Você deve fazer login para responder a este tópico.