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

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

Re: [shell-script] Lendo linha a linha e montando SQL query


From: André Saunite
Subject: Re: [shell-script] Lendo linha a linha e montando SQL query
Date: Tue, 25 Sep 2007 16:32:52 -0300

Oi Marcelo,

Eu fiz algumas alterações no script e testei para o seguinte arquivo:

pro_e030203.php 20.09.2007      14:40   novo livro da hora      Fredi
scripts/boxover.js      21.09.2007      13:40   novo    Fredi

Onde, na primeira linha, temos os seguintes campos:
arquivo: pro_e030203.php
data: 20.09.2007
hora: 14:40
descrição: novo livro da hora
autor: Fredi

E funcionou corretamente, a única parte que não testei foram os
comandos SQL pois não tenho o mysql instalado em minha máquina.

As alterações foram as seguintes:

 - Converti a data do formato 20.09.2007 para 2007-09-20, eu defini a
data a ser inserida no comando SQL no formato "2007-09-20 14:00:00",
porém não me recordo se é essa a sintaxe exata do MySQL;
 - Para facilitar, troquei todos os <TABS> por @ (arroba) e todos os
espaços por | (pipe), porém se algum desses caracteres aparecer em
algum dos campos pode causar problema no script;

Eu tenho certeza que esse script está longe de ser o ideal, espero que
alguém mais da lista venha com novas idéias de otimizações,

Segue o script:

#!/bin/bash

if [ $# -lt 1 ]; then
    echo "Usage: $0 <ARQUIVO>";
else
    INPUT=$1
    for hist in `sed s/'\t'/@/g $INPUT | tr " " "|" |  sort`; do
                file=`echo $hist | cut -f1 | tr -d ' '`
                CMD="select id from cvs_arquivo where path='$file'"
#        id_arquivo=`mysql -h xxx -pxxx -Dxxx -e "$CMD" | tail -n 1`
            data="`echo $hist | cut -d@ -f2 | awk -F. '{ print $3"-"$2"-"$1 }'`"
                hora="`echo $hist | cut -d@ -f3`"
        autor="`echo $hist | cut -d@ -f5`"
        descricao="`echo $hist | cut -d@ -f4 | tr "|" " " `"
        CMD="insert into cvs_historico(id_arquivo, data, descricao,
autor) values($id_arquivo, '$data ${hora}:00', '$descricao',
'$autor')"
        echo "$CMD"
#           mysql -h xxx -pxxx -Dxxx -e "$CMD"
done
fi

Abs,
André Saunite

On 9/25/07, Marcelo Salhab Brogliato <address@hidden> wrote:
>
>
>
>
>
>
> Olá,
>
>  estou com o seguinte problema, tenho um arquivo com a seguinte estrutura:
>
>  path_arquivo \t data \t hora \t descricao(1 ou mais palavras) \t autor
>
>  gostaria de montar SQL query para cada linha, com a seguinte estrutura:
>
>  select id from cvs_arquivo where path='path_arquivo'
>  a selecao acima irá retornar um único id.. que peguei com:
>  id= `mysql .... -e"select id from cvs_arquivo where
>  path='path_arquivo'" | tail -n1`
>
>  depois, preciso formar a seguinte sql:
>  insert into cvs_historico(id_arquivo, data, descricao, autor) values
>  ($id, $data, $descricao, $autor)
>
>  mas nao consegui montar a data e hora no formato que o sgbd entenda..
>  e tb nao consegui carregar a descricao e o autor..
>
>  estava fazendo usando o cut -fX
>  e tb nao consegui fazer um "trim"...
>
>  meu codigo esta em: http://pastebin.com/m1a6d7da7
>
>  alguma sugestao?
>
>  exemplos:
>  pro_e030203.php      20.09.2007      14:40   novo    Fredi
>  scripts/boxover.js   21.09.2007      13:40   novo    Fredi
>
>  abracos,
>  Salhab
>                    



-- 
------------------------------------
André Marques Saunite
e-mail/MSN: address@hidden
Linux User - 308676
------------------------------------


reply via email to

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