Problemas de performance na extração de dados de Arquivo XML

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Estefan Macalli Alves
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 05 Ago 2008 5:08 pm
Localização: Florianópolis - SC

E aí pessoal, estou fazendo uma carga de dados de arquivos XML para tabelas no Oracle e estou com um pequeno problema de performance dependendo do tamanho do arquivo XML.

Se o arquivo possui até uns 50 Kb, o procedimento é executado em menos de 1 minuto (Ok. Ótimo).

Arquivos com 200 Kb demoram em média 4 min. (Tempo aceitável).

Arquivos com 800 Kb demoram mais de 1 Hora. (Inaceitável).

Saberiam me dizer se o tamanho do arquivo XML é uma limitação no momento de extrair os dados ou se tenho problemas no meu código?

Até mais.


Estefan Macalli Alves
Analista de Sistemas
Psy Desenvolvimento de Sistemas Ltda.
Grecco
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 06 Ago 2008 2:38 pm
Localização: Campinas

Fala ai brother, beleza?

De que forma você está fazendo a extração do XML?

Seria interessante você não extrair diretamente do arquivo e sim primeiramente armazená-lo em um tabela que contenha uma coluna XMLType para que você tenha todo o processamento no banco.

Abraços.

Grecco
Estefan Macalli Alves
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Ter, 05 Ago 2008 5:08 pm
Localização: Florianópolis - SC

Opa... descupe a demora,

Sim, já estou realizando este procedimento.

Primeiro armazeno em uma tabela com uma coluna XMLType. Depois vou extraindo as informações utilizando os índices através da função position(), segue exemplo:

Selecionar tudo

select extractValue(b.arquivo_xml,'/Linhas/Coluna[position() = '||v_count_coluna||']/@Nome'),
                   extractValue(b.arquivo_xml,'/Linhas/Coluna[position() = '||v_count_coluna||']/@Valor')
            into   v_nome_variavel,
                   v_valor_variavel
            from   tabela_xml b;
Isso funciona bem, mas se o tamanho do arquivo contido na coluna XMLType aumenta um pouco, fica demorado demais.

Há outra forma de extrair os dados de uma coluna XMLType sem ser esta?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes