shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Problema com insercao no BD..


From: Vinicius Marques
Subject: Re: [shell-script] Problema com insercao no BD..
Date: Tue, 12 Dec 2006 18:00:50 -0300
User-agent: Thunderbird 1.5.0.8 (Windows/20061025)

Meu caro Tiago,
Cara eu nao tenho muita experiência com shell script, por isso acabei
por nao conseguir desenrolar muita coisa do que escreveu ..será que tem
como esmiuçar um pouco mais?
Desde ja Grato
Vinicius Marques


Tiago Barcellos Peczenyj wrote:

Ola

Validar este arquivo é facil, basta definir o 'numero' do campo e uma
expressão regular.

awk -F: 'function validate(valor,nome){
if (valor !~ /[0-9A-Za-z]/) printf "Erro! Campo \"%s\" vazio na
linha %d\n",nome,NR
}
{validate($3,"nome"); validate($4,"tel")}' dados

Se o campo que vc informa não 'casar' com a expressão regular, um
aviso sera emitido. vc pode personalizar a mensagem de erro.

Agora, o seu outro problema de cortar o 'fulano de tal' é que vc manda
do awk pro bash, e o separador de campos do BASH tem que ser setado
também. Vc poderia fazer tudo em awk, inclusive.

#!/usr/bin/gawk -f
function insert(matr,nome,tel,tel1,tel2,mail,alias){
cmd = "insert into dados (matr,nome,tel,tel1,tel2,mail,alias) values" ;
return cmd
sprintf("('%s','%s','%s','%s','%s','%s')",matr,nome,tel,tel1,tel2,mail,alias);
}
BEGIN{ FS=":"; }
{
print insert($2,$3,$4,$5,$6,$7);
}

vc pode executar assim:

$ ./arquivo.awk dados > insert.sql

e ai mandar o mysql importar este arquivo.

Veja se isso lhe ajuda.

On 12/11/06, Vinicius Marques <address@hidden <mailto:viniciusrt01%40pop.com.br>> wrote:
>
>
>
>
>
>
> Srs,
> Não tenho muita experiencia em Shell script e estava quebrando a cabeça
> para fazer uma insercao num BD e estava com os seguintes problemas.
>
> Os campos do texto que quero inserir estao dispostos da seguinte forma.
>
> :001:Fulano de tal:0xx21656565656: : : address@hidden <mailto:fulano%40tal.net>: fulano
>
> Porém como mostrado na linha alguns cadastros eu tenho campos vazios.
> Nesse caso eu ja queri acrescentar
> um "nao informado" na hora da insercao". Outro problema é qdo eu rodo o
> script abaixo ele me incrementa no banco só que assim no campo matr OK
> tudo certo porem o nome "Fulano de tal" e distribuido nos outros campos
> nome=fulano, tel=de, tel1=tal..
> Será que poderiam me dar uma luz sobre o assunto, ou material diretriz
> qq força é bem vinda.
> Abraço
> Vinicius Marques
>
> #!/bin/sh
> data=date
> cat $1 | awk -F: '{ print $2 $3 $4 $5 $6 $7 }' | while read x y z k a b
> do
> /usr/local/mysql/bin/mysql -u root -e "insert into dados
> (matr,nome,tel,tel1,tel2,mail,alias) values
> ('$x','$y','$z','$k','$a','$b')" Locate
> #echo $x $y $z $k $a $b $c
> done
>
> if [ "$?" = "1" ]
> then
> wall Erro na inclusao do Registro $count
> echo "Erro na insercao de dados do dia $data no registro $count" >>
> result_$data.log
> fi
> done
>
>
> _______________________________________________________
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! > http://br.mobile.yahoo.com/mailalertas/ <http://br.mobile.yahoo.com/mailalertas/>
>
>
>

--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer



        

        
                
_______________________________________________________ Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]