[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