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: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Problema com insercao no BD..
Date: Tue, 12 Dec 2006 20:03:35 -0200

Ola
vc quebra "fulano de tal" por que esta string contem 2 vezes o
caracter espaço em branco, que o shell reconhece como sendo um
separador de campo. uma alternativa seria vc "escapar" o espaço em
branco da sua string quando o awk imprime-a, colocando uma
contra-barra na frente. Outra seria vc imprimir entre aspas.
o seu script original funcionaria se vc informasse

#!/bin/sh
data=date
OLDIFS=$IFS
IFS=':'
cat $1 | awk -F: '{ OFS=":" ; print $2,$3,$4,$5,$6,$7 }' | while read ...

On 12/12/06, Vinicius Marques <address@hidden> wrote:






Cara complementando eu nao entendi direito como esta fazendo para
nao quebrar o "Fulano de tal" em outros campos...essa parte acho que esta
me dando mais dor de cabeça.
Abraço
Vinicius Marques


Vinicius Marques wrote:
>
> 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>
> > <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>
> > <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/>
> > <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/ <http://br.answers.yahoo.com/>
>
>


_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale
o discador agora!
http://br.acesso.yahoo.com






--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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