Boa tarde, Vou responder por experiencia propria,
Tambem estou desenvolvendo um sistema de ETL (Extract Transform e Load). Meus arquivos tambem sao txt e provem de um ERP SAP. Tem em torno de 150 000 linhas. Eh totalmente descartada a utilizacao de XML, os arquivos no minimo quadruplicam seu tamanho. O XML eh mais adequado para transacoes, exchange e coisas do tipo nao para carga de dados. Soh por curiosidade qual o seu banco de dados, se for Oracle voce pode tratar os txt´s por pl/sql, tenho exemplos se precisar. Temais. --- [EMAIL PROTECTED] escreveu: > Gostaria de colocar uma questão para a galera da > lista. > Estou num projeto que manipula conteúdo de arquivos > TXT e os grava num > banco de dados. Até aí, sem problemas e nem > novidades. > A questão é que estes conteúdos são disponibilisados > em linhas, minha > aplicação lê cada uma destas linhas e as sub-divide > em subStrings, e cada > subString é uma informação que deve ser gravada em > banco. > Exemplo de uma linha deste arquivo: > > 5002951224000104131858602 20020625MT01UN > 194946163000000000130000000000013000000000000221000000000000000000000000001700N > > Trecho de código de processamento desta linha: > > (...) > tipo = (linha.substring(0, 2)); > cpfCnpj = linha.substring(2, 16).trim(); > cfop = Integer.parseInt(linha.substring(53, > 56).trim()); > inscEstd = (linha.substring(16, 30).trim()); > (...) > > Estas variáveis são gravadas no banco. > Como disse, até aí sem problema. Mas existem > arquivos cujo tamanho variam > entre 40 e 100MB com cerca de 80mil a 840mil linhas, > e cada uma destas > linhas deve ser lida e processada. > Como eu uso File para poder ler estes arquivos o > consumo de memória é alto, > pois estes arquivos são carregados na memória até o > fim de seu > processamento e os lotes de arquivos são da ordem de > 2000 a 5000 arquivos. > O que não é problema, a princípio, para os servers > que temos aqui. > O problema, na minha opinião e gostaria de poder ler > a de vcs, é que se > ouver uma mudança no padrão do tamanho da linha ou > algum dado fora de lugar > o processamento desta linha fica comprometido. Ou no > caso concreto onde a > variável cfop (do exemplo acima) não terá mais > tamanho 3, passando a ter > tamanho 4, isso faz com que eu tenha que mudar todas > as outras > "coordenadas" de varáveis, para poder pegar a > informação correta. > A minha idéia era a de acabar com esse lance de ter > que ler linha a linha e > sub-dividi-lás em subStrings. > Poderia ter um arquivo XML parecido com este trecho: > > <tipo>50</tipo> > <cpfCnpj>02951224000104</cpjCnpj> > <cfop>616</cfop> > <inscEstd>131858602</inscEstd> > > e assim por diante. Desta forma poderia acessar > diretamente a informação > que desejo. > Claro que devemos fazer uma DTD para estes arquivos, > pois cada <tipo> de > linha tem a sua particularidade, mas isso também não > seria problema. > Bem, se transformar as linhas do arquivo TXT em tags > de arquivos XML não é > o problema, porque a questão ? Bem, se um arquivo > texto, que só tem > caracteres ANSI pode chegar a ter 100MB como ficará > um arquivo XML com um > monte de tags ? Muito maior que um arquivo TXT ! > Mas eu acho que a vantagem seria a seguinte > (gostaria que alguém me > confirmasse): > > 1) Apesar do arquivo ser maior em MB as informações > estarão dispostas de > forma ordenada e se um campo mudar de tamanho não > seria necessário mudar o > processamento as outras variáveis. > 2) Mesmo sendo maior em MB isso não acarretaria > grandes transtornos de uso > de memória tendo em vista que não usaria File para > ler o arquivos, e depois > cada linha do arquivo. Usando a API XML de JAVA > (um parser) o mesmo > carregaria na memória apenas a estrutura DOM do > documento e isso é mais > leve do que o arquivo como um todo. Posso usar esta > estrutura para > manipular as informações do arquivo. > 3) Ganharia em velocidade de processamento, pois > poderia acessar > diretamente as informações desejadas e não ter que > ficar "picando" linha a > linha para separar a informação desejada, lembrando > que tem arquivo com > mais de 800mil linhas ! > > A galera que trabalha com arquitetura/projeto > poderia opinar sobre esta > possibilidade ? > Tem alguém na lista que já implementou JAVA com XML > pra valer ? > Alguém sabe de padrões para JAVA com XML ? > > Abraço > Carlos > > *********************************************** > Carlos Santiago > [EMAIL PROTECTED] > Programador JAVA > Equipe de Implementação - SAGETI > Secretaria de Estado de Fazenda - MT > *********************************************** > > > > ------------------------------ LISTA SOUJAVA > ---------------------------- > http://www.soujava.org.br - Sociedade de Usuários > Java da Sucesu-SP > dúvidas mais comuns: > http://www.soujava.org.br/faq.htm > regras da lista: > http://www.soujava.org.br/regras.htm > historico: > http://www.mail-archive.com/java-list%40soujava.org.br > para sair da lista: envie email para > [EMAIL PROTECTED] > ------------------------------------------------------------------------- > _______________________________________________________________________ Busca Yahoo! O melhor lugar para encontrar tudo o que você procura na Internet http://br.busca.yahoo.com/ ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------