Popular tabela com conteudo de arquivo HTML

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
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Galera, eu procurei no fórum e não encontrei nenhum tópico que pudesse me ajudar no que eu preciso. O que eu preciso é o seguinte, carregar um arquivo HTML em uma tabela Oracle via código. Alguém tem alguma idéia? Exemplo? Documentação?

Grato.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, beleza?

O ideal (como o arquivo HTML é extenso, na maioria das vezes) seria você gravar num campo CLOB.

Abaixo, fiz um teste gerando um Html de exemplo numa variável, mas, você pode tentar ler do S.O também o arquivo.

Selecionar tudo

create table teste_clob (codigo number(05), conteudo_html clob);

declare
  vHtml clob;
begin
  vHtml := vHtml || '<HTML>';
  vHtml := vHtml || '<BODY>';
  vHtml := vHtml || '  <B>Olá Mundo</B>';
  vHtml := vHtml || '</BODY>';
  vHtml := vHtml || '</HTML>';
  
  --
  insert into teste_clob fields (codigo,conteudo_html)
                         values (1,vHtml);
  --                         
  commit;
  -- 
end;  
Se você tentar analisar o resultado do select nesta tabela acima, em uma ferramenta de desenvolvimento, tipo um PL/SQL Developer, verá que o resultado em Html sai certinho, ficando negrito.

Qualquer coisa, manda pra gente.
Abraço,
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Eu testei o exemplo postado e funcionou perfeitamente, no entanto, o que eu preciso não é manter a formatação HTML. No meu caso, é um arquivo com uma tabela com 20 colunas e n linhas. Eu fiz um teste utilizando o mesmo exemplo com uma linha da tabela e foi funcionou também, mantendo as colunas separadas por espaço. Mas mesmo funcionando eu preciso de algo que me permita trabalhar esses dados como se fosse uma tabela separando os dados por coluna. Eu poderia adaptar o seu exemplo para gravar numa tabela, mas me pareceria meio redundante. O que eu acho que vai me ajudar nesta situação são External Table.

De qualquer maneira muito obrigado!

Por favor, se alguém tiver mais alguma sugestão?

Abç.,
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, bom dia...

Só pra ver se eu entendi e, para que os demais também...

Você tem uma table

Selecionar tudo

  <table><tr><td>teste</td></tr></table> 
e, precisa que o conteúdo "teste" seja jogado numa coluna do banco?

Na verdade tua table html tem várias linhas e colunas e, você quer esse conteúdo, e somente esse (as demais informações não), dentro de uma tabela Oracle?

Abraço,
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Sim, é isso mesmo Trevisolli. Eu tenho uma tabela no meu arquivo HTML e preciso que cada valor contido em cada coluna da tabela HTML seja inserido em uma respectiva coluna na tabela no banco.

Att.,
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Sinceramente brother, acho q vai ter q montar uma lógica pra isso. Mas, fica o tópico ai pros demais foristas.
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Quando você me passou esse exemplo, estava pensando em fazer o que: jogar os dados da tabela HTML no campo CLOB, tratar esses dados substituindo o espaço em branco por ";" ou "|", substituir as vírgulas por ponto e gerar um arquivo *.txt em um diretório pré-definido e depois carregar esse arquivo para uma tabela. Quando eu disse que acho redundante esta "solução" é porque acredito que deva haver uma forma mais prática, eficiente e direta de fazer isso.

Andei pesquisando sobre External Table e vi alguns exemplos onde são criadas essas tabelas depois é feito um insert com base em um arquivo. Agora só preciso de um tempo para criar um exemplo para ver se funciona. Caso alguém conheça melhor essa funcionalidade e puder dar uma força, será muito bem-vinda.

Grato.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Uma outra dica, seria você inserir no Clob e, depois percorrer a table, utilizando a função INSTR do Oracle (buscando a posição da string '<table>' e '</table>' respectivamente, para leitura apenas deste conteúdo.
Porém, depende de alguns fatores, como o teu HTML estar com todas as tags corretas e, ainda assim vai uma lógica considerável.

Abraço,
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Bom dia Senhores.

Infelizmente ainda não tive tempo de criar um teste, mas estive pensando se é possível converter via código o arquivo HTML para XML depois fazer um "load" desse arquivo para uma tabela.

Alguém sabe se isso é possível?

Grato.
Responder
  • Informação
  • Quem está online

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