[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
------------------------------------