[Cascavel-pm] retirando dados de texto pra bd mysql...
Luis Campos de Carvalho
lechamps em terra.com.br
Quarta Abril 14 10:07:13 CDT 2004
Gabriel Rodrigues wrote:
> Olá pessoal blz ?
> Tenho um arquivo com essas características...
>
[snip]
> gostaria de pegar antes de tudo o codigo que estah
> depois do segundo pipe '|' ateh o primeiro espaço que
> vier, mandando o mesmo para uma coluna no mysql...
>
> depois pegar o que estiver depois do espaco e mandar
> para um outro campo no bd mysql...
>
> Depois disso pegar estah mesma linha que inicia com
> '>' INTEIRA e enviar para uma outra coluna.
>
> Em seguida tem que enviar todo o codigo que vem com as
> letras ACGT para um unico campo tipo binario. São
> todas as letras ateh a proxima entrada que começar com
> outro '>' que aí já não faz mais parte da sequencia
> antiga...
Gabriel, parece simples fazer isso com um par de regular expressions
e um loop while. Talvez você não conheça Perl o suficiente para resolver
sozinho, e eu posso ajudar. Mas preciso que você me envie uma "amostra"
de um arquivo (pode ser velho), anexada, em formato ASCII, para que eu
consiga construir expressões regulares boas o suficiente para resolver
seu problema.
Acho que você pode começar assim:
{ # Expressões regulares para capturar dados dos genes
# Descrição da codificação de uma base...
my $base = qr/[ATCG]/;
my $base_field = qr/$base+\s+(?:$base+(?:\s+)?)*/;
# este é o primeiro campo, não sei o que quer dizer (Gabriel?)
my $field1 = qr/gnl/;
# Este parece ser o "separador" de campos, posso
# estar enganado (Gabriel?)
my $separator = qr/|/;
# este é o segundo campo, parece que o único valor
# possível é "uv". Confirme isso, Gabriel.
my $field2 = qr/uv/;
# Esta expressão regular bate com o terceiro campo,
# mas pode ser ruim para o restante do arquivo. Preciso
# saber mais sobre o formato do terceiro campo. Gabriel,
# quanto mais informações você fornecer, mais depressa
# posso ajudar a resolver o que resta deste problema.
my $field3 = qr/[A-Z]\d{5}\.\d:\d\-\d{4}\-\d{2}.+$/;
# Esta é a expressão regular que eu (suponho)
# captura todos os campos de cada registro:
my $record = qr/^>
($field1) $separator
($field2) $separator
($field3) \s+
($base_field)
/x; # Este 'x' é MUITO importante!
while( <GENE_DUMP_FILE> ){
my( $campo1, $campo2, $campo3, $bases ) = m/$record/;
# operação de gravar no seu banco de dados preferido aqui
} # end while
}
Putamplexos!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is BSc in Comp Science,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm