importação

Boa galera preciso da ajuda dos amigos,

Bem vamos lá:

Tenho um arquivo txt , segue abaixo:

02/01/06 10:17AM 1 E1074 T10101 0122238644009 00:01’12

02/01/06 10:17AM 1 E1150 T10107 39776836 00:00’08

02/01/06 10:17AM 1 E1015 T10119 22056915 00:00’14

02/01/06 10:17AM 1 E1085 T10112 33846906 00:00’57

02/01/06 10:17AM 1 E1078 T10121 27250508 00:00’05

02/01/06 10:17AM 1 E1157 T10105 0123136376456 00:00’28

02/01/06 10:17AM 1 E1076 T10122 22688525 00:00’50

Separado por tab.

Qual o meu drama.
Preciso ler este arquivo e gravar em uma tabela de um banco de dados ( mysql ), sendo cada campo em seu campo , tipo:
Data , hora , situacao, campo1, campo2, fone e duração.

Já tentei de uma forma, usando a sintaxe LOAD DATA INFILE, + não deu certo, iria ficar amarrado a um banco , então pensei… armazenar em um arrayList e efetuar o insert, então agora começa o drama não sei como fazer.

Ler o arquivo sei:

import java.io.*;
public class ReadFile {
public static void main (String[] args) {
File file = new File(“c:\pabx03.txt”);

try{
	
	BufferedReader in = new BufferedReader(new FileReader(file));
	String s;
	
	s = in.readLine();
	while (s !=null){
		System.out.println(s);
		s = in.readLine();
	}
	in.close();
}catch (FileNotFoundException e1){
	System.err.println("Arquivo não encontrado:"  + file);
	
}catch(IOException e2){
	e2.printStackTrace();
}

}
}

Qual o drama?
1 – Separar os dados.
2 – depois dar um insert linha a linha X campo a campo.

O intuito deste sistema é importar arquivos txt para um banco de dados.

Seria legal o fórum abraçar este assunto, pois quem nunca precisou, com certeza um dia vai precisar.

Conto com a ajuda dos amigos.

Nossa, isso soa como: “vamos la pessoal, isso eh um problema mundial, vamos todos se empenhar em resolver esse problema que assim salvaremos o mundo”.
Meio dispensavel naum acha?! parece psicologia barata para resolver seu problema, ia ficar mais legal se vc colocasse: “Pow, realmente eu nao sei como fazer, e gostaria de alguma dica/ideia”

:wink:

Mas de qualquer forma, da uma olhada se te ajuda:

		//string com dados separados por tab
		String line = "02/01/06	10:17AM	1	E1150	T10107	39776836	00:00'08";
		//separo a string em varias partes, a partir dos tabs 
		String[] partes = line.split("\t");
		//mostro as partes (daqui em diante eh soh vc incluir, sabe 
		//que partes[0] eh equivalente ao campo x do banco, a partes[1] 
		//ao campo y e assim em diante)
		for (String parte : partes) {
			System.out.println(parte);
		}

Boa noite amigo luBS , o meu apelo e sim para que pessoas que sabem bem mais que os interessados em aprender tenham uma ideia de por onde começar.

Agradeço muito a sua ajuda , + não entendi como irei inserir esses dados em meu banco de dados, se poder me esclarecer te agradeço.

Grande são os homens que conseguem ser humilde em saber que, o prfessor de hoje , foi o aluno de ontem.

Abraços amigo, e te agredeço muito pela força e puder me ajudar + fico muito agardecido e se não puder te agradeço da mesma forma.

Abraços,

Shelter

Como já foi passado, pra separar os campos é só usar o metodo split(). E para inserir no banco de dados dê uma olhada em algum tutorial sobre JDBC, aqui no PJ mesmo tem.

pow vc poderia me passar algum exemplo de com faço esse insert?

Agradeço

Abraços

		Connection conn = null;  //aqui tu obtem sua conexao com o banco (procura por tutoriais)
		PreparedStatement stmt = conn.prepareStatement("insert into table (campo1, campo2, campo3) values (?,?,?)");
		stmt.setString(1, partes[1]);
		stmt.setString(2, partes[2]);
		stmt.setString(3, partes[3]);
		stmt.execute();

boa amigo lubs consigo dar o insert no banco.

Agora olha só a nova, ve se vc ou os amgos podem me ajudar, no meio desta txt tem o seguinte:
04/11/08 12:13PM 1 E1243 T10105 27788099 00:00’04

04/11/08 12:13PM 1 E1144 T20909 0251121310005 00:00’21

04/11/08 12:13PM 1 E1022 T10928 3787 0’00 00:00’58

04/11/08 12:13PM 1 E1107 T10503 2300 0’00 00:00’20 TR


Date Time T Ext CO Dial Number Ring Duration Acct code CC


04/11/08 12:13PM 1 E1324 T31204 86322414 00:02’20

04/11/08 12:13PM 1 E1030 T10124 27998523 00:01’35

04/11/08 12:13PM 1 E1078 T11203 0319691296940 00:00’16
esse monte de astiscos… e aí quando chega nesta parte da erro…
eu teria que ler e remover este certo? Alguem sabe como?

Grato

Shelter

Bom, como dizem, gosto é igual ** cada um tem o seu…

Mas eu usaria a classe StringTokenizer do java para fazer a divisão de dados no seu arquivo, mas isso vai de caso pra caso.

Como você lê linha por linha desse arquivo, se essa parte onde tem os asteriscos e a mensagem no meio for padrão (sempre vai ser desse jeito), toda vez que vocÊ pega um token do arquivo, verifique o tamanho dele. Cada dado que vc recupera do arquivo tem um tamanho máximo permitido não é? então, quando o token for maior que determinado número, significa que é uma linha cheia de asteriscos, então, vc pula essa linha, pula a segunda que é a mensagem e a terceira que é a outra linha de asteriscos, e volta a pegar os dados do seu arquivo.

Abraço!

Use String.split().

http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)

Valeu jairelton, por essa eu não sabia…