importação

9 respostas
S

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 <a href="http://java.io">java.io</a>.*;

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.

9 Respostas

L

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);
		}
S

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

J

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.

S

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

Agradeço

Abraços

L
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();
S

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

H

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!

J

Use String.split().

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

H

Valeu jairelton, por essa eu não sabia…

Criado 5 de abril de 2008
Ultima resposta 14 de abr. de 2008
Respostas 9
Participantes 4