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: Mon, 11 Dec 2006 12:38:46 -0200

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> 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: 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/





--
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer


reply via email to

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