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

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

Re: [shell-script] Loop de exit code


From: Jeiks
Subject: Re: [shell-script] Loop de exit code
Date: Fri, 31 Jul 2009 09:01:17 -0300

ops.. q tal assim:

while ! sqlite3 stockbot.db <<EOF
INSERT INTO produtos (codigo, estoque, custo) VALUES ($campo1, $campo2,
$campo4);
EOF
do
    sleep 1
done

abs

2009/7/31 Kurt Kraut <address@hidden>

>
>
> Olá,
>
> Estou tentando fazer um script que insere dados em um banco de dados SQLite
> a partir de um arquivo CSV, modificando alguns dados antes de inserir. Eis
> o
> script:
>
> ----
>
> #!/bin/dash
> fonte=depois-da-perda.csv
> while read linha
> do
> #Coletando os campos e processando o campo4
> campo1=$(echo $linha | cut -d";" -f 1)
> campo2=$(echo $linha | cut -d";" -f 2)
> campo4=$(echo $linha | cut -d";" -f 4 | tr , .)
> #Processando os demais campos
> campo1=$(printf "%06d" $campo1)
> if test $campo2 -lt 0
> then
> campo2=0
> fi
> #Gravando no banco de dados
> sqlite3 stockbot.db <<EOF
> INSERT INTO produtos (codigo, estoque, custo) VALUES ($campo1, $campo2,
> $campo4);
> EOF
> done < $fonte
>
> ----
>
> Ele funciona como esperado, mas há um problema. O comando sqlite3 não lida
> com concurrency no banco de dados. Se outro processo estiver fazendo
> consultas no banco de dados (comando SELECT em SQL), a gravação dos dados
> no
> script supracitado falha. Então minha conversão de CSV em SQLite têm perda
> de dados caso outro processo esteja consultando dados no mesmo banco de
> dados.
>
> Felizmente, quando isso acontece, o sqlite3 sai com exit code 1. Então eu
> precisaria fazer um loop com o comando do sqlite3 (linhas 15, 16 e 17) que
> só saísse dele quando o exit code fosse 0. Eu experimentei com bash:
>
> until [ $? = 0 ]; do
> sqlite3 stockbot.db <<EOF
> INSERT INTO produtos (codigo, estoque, custo) VALUES ($campo1, $campo2,
> $campo4);
> EOF
> done
>
> Mas não deu certo. Alguma sugestão?
>
> Desde já agradeço a atenção dispensada,
>
> Kurt Kraut (address@hidden <listas%40kurtkraut.net>)
>
> PS: Caso precisam experimentar, coloco abaixo 5 linhas do
> depois-da-perda.csv:
>
> 16;4;;5,69
> 17;4;;9,67
> 18;3;;9,67
> 19;3;;9,18
> 20;0;;4,44
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Jacson R. C. Silva


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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