Scritp/programa pra migrar o banco de dados

8 respostas
P

Pessoal, peguei um aplicativo com banco de dados que salvam os arquivos em um formato .dat

Está em texto puro, como faço pra criar um script pra ler esses dados, e salvar no meu banco mysql?

Alguem poderia me dar um exemplo? de como ler os dados e depois salvar no banco.

Obrigado.

8 Respostas

M

Depende. Como estão dispostos os dados no arquivo .dat? Poste-o aqui.

P

Estão assim:
Código Produto Descrição Preço Custo Preço Venda (é só pra ilustrar esses cabeçalhos)
//No arquivo estão assim
XYZ01254 CABO PARA REDE 1.55 2.85
ABC2128 DISQUETE 1.44 0.55 1.10

É dessa forma que está no “banco”.

São exemplos. No inventario são pelo menos 200 ítens! Para recadastrar tudo ficaria inviável.

M

Certo. Sendo assim, poderia ser feito o seguinte:

1 - Criar uma classe que modela seus objetos (afinal, isso é cadastro de que mesmo?). Essa classe teria os atributos codigo, produto, descricao, pCusto, pVenda (por exemplo).

2 - Criar uma classe que fabrica conexões com o BD para você.

3 - Criar uma classe DAO que inserirá e recuperará posteriormente os objetos no banco.

4 - Criar uma classe executável (com o método main) que fará a chamada dos métodos. Esse classe seria basicamente um laço while que leria linha a linha do arquivo (que tal Scanner?), criaria um objeto para cada linha e gravaria esse objeto no BD através de um DAO.

Achou complicado? Ou não entendeu? Sugiro que leia a FJ21 da Caelum e se tiver dúvidas é só voltar a postar.

P

Entendi sim, somente a parte do Scanner que eu nunca usei.

Poderia me dar um exemplo de como eu leria somente o CÓDIGO do produto por exemplo ?

Esse Scanner substituiria o readLine()?

Valeu!

M

Um exemplo de Scanner:

Scanner sc = new Scanner(new File("cadastros.dat"));
while (sc.hasNextLine()) { // enquanto houver mais linhas...
    String linha = sc.nextLine(); // armazeno uma linha nessa variável
    String[] valores = linha.split(" "); // separa cada palavra numa String
   // e com isso você teria os valores um vetor, podendo manuseá-los como precisar
}

E respondendo sua pergunta: sim, substitui o método readLine() de BufferedReader. Qual a vantagem? Nesse caso não muita, mas o Scanner é muito mais poderoso que o BufferedReader. Leia a documentação dessa classe se você quiser saber mais sobre ela.

M

Link: http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

P

Kra, valeu, vou começar a estudar essa classe,mas pelo visto eh so java6 que tem suporte ne? terei que atualizar entao pra testar, valeu!

M

A partir da versão 1.5 do Java. Mas se você ainda usa a 1.4 já passou da hora de uma atualização, hein? :wink:

Criado 9 de abril de 2009
Ultima resposta 10 de abr. de 2009
Respostas 8
Participantes 2