Fazendo importação de arquivo texto com Grails
03/11/2009 00:00
0
Estou desenvolvendo uma aplicação em Grails e preciso importar dados de um arquivo .CVS ou .txt e jogar no banco de dados PostgreSql, como eu poderia fazer isso?

Muito grato.
Tags: Groovy


0
No caso do arquivo CVS você poderia usar expressões regulares para separar os campos presentes em cada linha e, em seguida, a partir de inserts mesmo (caso não tenha uma entidade mapeada) ir populando a sua base de dados.

Outra opção, caso não queira usar expressões regulares seria a classe StringTokenizer, usando como separador o caractere ; (ou o caractere que esteja separando seus campos no arquivo csv).

Com relação ao arquivo txt, seria necessário ver qual a formatação do bichinho para ver qual a melhor forma.


0
Vou tentar!!

Obrigado!
04/11/2009 00:00


0
kicolobo, Obrigado pela ajuda!

Mas como posso abrir um arquivo .cvs? Esta classe StringTokenizer, server para ler!

ex.: arquivo.cvs

book;autor;data
Grails teste;Jose;10/10/2009


Obrigado
04/11/2009 00:00


0
toda string em java ou groovy tem um método que é o split. Esse metodo você passa qual é a expressão regular ou caracter que será usado para fazer separação.
Assim, imagine que tem um arquivo e quer lê-lo e fazer o spit por virgula (CSV) . o codigo groovy ficaria assim:

File arquivo = ...
arquivo.eachLine {
lista_alores = it.split(",");
}
22/01/2010 00:00


0
Mr. Pra Quê? =)

I LOVE GROOVY!

def csv = new File("c:\teste\arquivo.csv")

csv.splitEachLine(',') { campo ->

def id = campo[0] ?: 0

if (id > 0) {
def usuario = Usuario.get(id)
usuario.nome = campo[1] ?: "Sem nome"
usuario.rua = campo[2] ?: "Sem rua"
}

}


File Groovy JDK
http://groovy.codehaus.org/groovy-jdk/java/io/File.html


0
E quando precisa ler vários arquivos, por exemplo:
clientes_1201.txt
clientes_5465.txt
clientes_8546.txt
Como ler todos?
11/09/2010 00:00


0
Opa!

Nesse caso, para ler todos você precisa colocar o código do @wanderson.santos dentro de um bloco de código que lê arquivos dentro de um diretório específico, como abaixo:


new File("C:\suaPasta").eachFile{arquivo ->
println arquivo
arquivo.splitEachLine(',')...
}


Abraços!
21/09/2011 20:33


0
Boa tarde.

Estou encontrando dificuldade para popular minhas classes de domínio com um arquivo csv.

Eu adicionei um println a cada linha lida do csv e eles estão sendo lidos, massss não estão sendo inseridos na minha tabela.

Preciso de um help.. não é nada urgente não.. comecei a me interessar pelo assunto depois do video "Grails: O que e porque"

Segue a estrutura do meu controlador "Importacao"

Importante:
- Telefone e Email são duas classes que se relacionam com a Pessoa, onde uma pessoa possui um ou mais telefones/email
- Tentei simplificar para inserção apenas do usuario.nome (comentando as outras linhas), mas mesmo assim, não rolou...
- Meu output mostra os campos bonitinho

Obrigado antecipadamente

-------------------------------
package meuProjeto
import org.core.stress.*

class ImportacaoController {

def index() {
def csv = new File("D:\SERVER\Arquivo.csv")

csv.splitEachLine(';') { campo ->

//def id = campo[0] ?:0

println(campo[0] +" "+ campo[1] +" "+ campo[2] +" "+ campo[3])
def pessoa = new Pessoa()
pessoa.nome = campo[0] ?:"Sem nome"
pessoa.addtelefones = [campo[1] ?:"Sem Residencial",campo[2] ?:"Sem Comercial"]
pessoa.emails = [campo[3] ?:"SemEmail@terra.com"]
pessoa.save()
}
}
}

Rafael Calastro
21/12/2011 20:06



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto