Captura de Dados - ARQUIVO TXT - Inserção no Banco de Dados

6 respostas
brunosardao

Galera,

Seguinte, estou enfrentando o seguinte problema:

ArrayList<String> dadosArquivo =  new ArrayList<String>();
                                           
                   while( (leitor=reader.readLine() ) != null ) {     
             
                        String arquivoAbend = leitor;
                        String[] novoArq = arquivoAbend.split(" ");
                        StringBuffer linhaSaida = new StringBuffer();
                       
                       if (leitor.contains("UNEXPLA")){
		           if(novoArq[13].length() > 8 && novoArq[4].equals("180211")){
        
		                   linhaSaida.append(novoArq[1] + "  ");
		                   linhaSaida.append(novoArq[2] + "  ");
		                   linhaSaida.append(novoArq[3] + "  ");
		                   linhaSaida.append(novoArq[4] + "  ");               
		                   linhaSaida.append(novoArq[13].substring(0,8) + "  ");
		                   linhaSaida.append(novoArq[13].split("/")[1] + "  ");
		                   linhaSaida.append(novoArq[16] + " " + novoArq[18]);               
		                        
		                        //salva na lista   
		                   dadosArquivo.add(linhaSaida.toString());  
                                  
                           }      
                         }          
                       } 
                             for(String linhaSaida : dadosArquivo){   
		             System.out.println(linhaSaida);   
                            }

No codigo acima, na linha if (leitor.contains("UNEXPLA")) eu obtenho apenas um tipo de erro da minha log, porém preciso obter mais 3 tipos de informações.

Como poderia fazer para obter todas as informações? eu tentei adicionar dentro do próprio IF algo do assim:

if (leitor.contains("UNEXPLA") && leitor.contains("ABEND") && leitor.contains("FAILED") && leitor.contains("NOT CATLGD 2"))

Porém, o programa não gera nada e não dá mensagem de erro…

como posso fazer isso ?

Obrigado mais uma vez…

6 Respostas

sunwebdeveloper

Não sei se entendi direito,
Mas não seria: OU (||)

if (leitor.contains("UNEXPLA") || leitor.contains("ABEND") || leitor.contains("FAILED")   
             || leitor.contains("NOT CATLGD 2"))

em vez de E (&&)

if (leitor.contains("UNEXPLA") && leitor.contains("ABEND") && leitor.contains("FAILED")   
             &&  leitor.contains("NOT CATLGD 2"))
brunosardao

bem, acredito que sim, pois preciso pegar todas estas informações.

Vou testar desta forma…

valeu sunwebdeveloper

Já já eu posto o resultado.

brunosardao

valeu sunwebdeveloper

Deu certinho…

brigadão…

brunosardao

Galera,

Seguinte:

Com este código abaixo, eu pego as colunas de um arquivo TXT que eu tenho e imprimo na tela os valores.

Pórém, eu gostaria de pegar estes valores, e adicionar em um banco de dados.

A conexão com o banco eu já tenho, só preciso saber como adicionar estes valores no banco de dados.

Vocês poderiam me ajudar mais uma vez ?

Obrigado,

linhaSaida.append(novoArq[1] + "  ");   
             linhaSaida.append(novoArq[2] + "  ");   
             linhaSaida.append(novoArq[3] + "  ");   
             linhaSaida.append(novoArq[4] + "  ");                 
             linhaSaida.append(novoArq[13].substring(0,8) + "  ");   
             linhaSaida.append(novoArq[13].split("/")[1] + "  ");   
             linhaSaida.append(novoArq[16] + " " + novoArq[18]); 


    dadosArquivo.add(linhaSaida.toString());     
                                  
          for(String linhaSaida : dadosArquivo){     
          System.out.println(linhaSaida);     
          {
sunwebdeveloper

Faala Bruno,
Acredito que Vc não esteja usando um framework orm (hibernate, toplink, etc…)
Entao vamos de jdbc puro mesmo.

Mais ou menos isso:

//expressão SQL de insert em sua tabela com a quantidade de colunas da mesma, ou Vc pode especificar as coluna que deseja incluir na expressão
		String query = "insert into NomeDaSuaTabela values(?,?,?,?,?,?,?)";		
		PreparedStatement ps = conn.prepareStatement(query);

		//Seta os parametros de acordo com o tipo de dados da sua coluna(String = char/varchar)
		ps.setString(1, novoArq[1]);
		ps.setInt(1, novoArq[2]);
		ps.setBigDecimal(1, novoArq[3]);
		ps.setTimestamp(1, novoArq[4]);
		ps.setString(1, novoArq[5]);
		ps.setString(1, novoArq[6]);
		
		// retorna a quantidade de linhas inseridas/deletadas/atualizada através do comando.
		int i = ps.executeUpdate();
		//Se quiser pode tratar aqui
		if(i==0){
			throw new SQLException("Problemas ao inserir.");
		}				
		ps.close();

Espero ter ajudado.
Abraços,

brunosardao

Fala sunwebdeveloper

Brigadão…logico que ajudou, vou testar depois em casa…

Agora só uma dúvida, na minha log em uma das colunas, ela possui a informação com 8 posições, uma barra e uma numeração de 5 digitos que o ID exemplo:

XXXXXXXX / 00000

Tem alguma problema eu setar esta informação, usando o split da forma que eu tava usando anteriormente conforme abaixo:

ps.setString(1, novoArq[13].split("/")[1];

Por que assim, eu consigo pegar a informação de 8 digitos, removo a barra e pego também o ID…

Valeu, Abraços.

Criado 17 de maio de 2011
Ultima resposta 18 de mai. de 2011
Respostas 6
Participantes 2