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

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

Re: [shell-script] Re: Script para extrair dados da semana passada


From: Lucas Pereira Caixeta
Subject: Re: [shell-script] Re: Script para extrair dados da semana passada
Date: Sun, 14 Dec 2008 23:25:19 -0200

Nossa Cristiano, voce saca muito heim!
vou colocar tudo no meu script :D

Ah, estarei usando o script num *HP-UX* e o banco é o *Oracle *mesmo..

Assim que eu terminar o bendito, o postarei aqui para ajudar quem precisar
de algo parecido :-)

Abraço!

2008/12/14 Cristiano Ferrari <address@hidden>

>   --- Em address@hidden<shell-script%40yahoogrupos.com.br>,
> Lucas Pereira Caixeta
> <lpcnew@...> escreveu
>
> >
> > Prezados colegas de grupo,
> >
> > Eu havia mandado ontem um e-mail pedindo uma ajuda para um problema
> e, no
> > final das contas tive ajuda em 2. No técnico que havia perguntado e
> uma dica
> > para vida mesmo rs...
> > Desculpe ter vindo todo afobado pedindo ajuda "urgente" ao grupo.
> Sei que
> > todos ajudam de bom grado e sem obrigação... estão mesmo dividindo
> > conhecimento, o que é fantástico em um mundo tão individualista como o
> > nosso.
> >
> > O membro MrBiTs me alertou de que deveria ter feito um post com esse
> titulo,
> > e resolvi fazer para caso alguem mais possa me ajudar.
> >
> > *Problema:*
> > Rodar uma query toda semana de forma automática e essa query irá
> pegar os
> > dados da semana anterior à corrente.
> > *Solução até agora:*
> > A que achei mais simples foi mesmo de usar o *date -d "7 days ago"*,
> como
> > responderam no ultimo email.
> >
> > Eu ja programei em C... e estou programando em php e java e agora,
> enfim,
> > também shell rs...
> > Estou ainda confuso de onde colocar o *date -d "7 days ago" *de
> forma que
> > ele se faça necessário (condição necessária) para que o programa rode a
> > query...
> >
>
> Caríssimo Lucas...
>
> Se você já programou em C e java, shell script será puro lazer para
> você. Como o Eri indicou, você primeiro define as variáveis, depois as
> usa como parâmetros na própria query, que o shell se encarregada de
> expandi-las (expandir = substituir o conteúdo da variável pelo(s)
> comando(s) declarado(s) no sub-shell [as crazes ``] e posteriormente o
> conteúdo da variável no texto da query onde ela é referenciada).
>
> Mas cuidado. Isso somente funciona se você estiver passando o texto da
> query direto no texto do próprio script.
>
> Porém, se dentro do script você chamar o comando em shell que
> executará a query à partir de outro arquivo texto, passado este
> comoando através de um parâmetro ou redirecionamento de stdin ( < ) a
> expansão do shell não funcionará, e sua consulta retornará erro.
>
> Neste caso, você pode usar outro recurso de expansão do shell, que
> substitui valores de uma variável. A declaração ${var//texto/novo} tem
> o poder trocar um conteúdo por outro ao expandir uma variável.
>
> Como fazer então?
>
> Faça algo assim:
>
> 1. Declare as variáveis das datas como se a query fosse ser descrita
> no corpo do próprio script. Ex:
>
> DATAINI=`date -d '-7 days' +%m/%D/%Y`
> DATAFIM=`date -d '-3 days' +%m/%D/%Y`
>
> 2. Crie um arquivo texto com o conteúdo da query e nas condições da
> data, ao invés da variável, informe uma referência única para as
> datas. Ex:
>
> # cat exemplo.sql
> select
> data,
> nf,
> total
> from
> vendas
> where
> data='DTINI' and
> data='DTFIM'
> #
>
> 3. No corpo do script declare uma variavel que contenha todo o texto
> da query, através da expansão com substituição. Ex:
>
> QUERY0=`cat exemplo.sql`
> QUERY1=${"$QUERY0"//DTINI/"$DATAINI"}
> QUERY=${"$QUERY1"//DTFIM/"$DATAFIM"}
>
> 4. Como você não mencionou o banco de dados que está usando, não sei
> qual método de entrada da query que ele suporta via console. Mas você
> pode fazê-lo através de um pipe (|) ou de um redirecionamento de stdin
> (<), caso ele suporte. Ex:
>
> # echo "$QUERY" | comando_banco
>
> ou
>
> # comando_banco < echo "$QUERY"
>
> 5. Porém, se seu banco não suporta entrada da query via pipe ou stdin,
> você terá então que gravar o conteúdo da variável, em um arquivo texto
> e passá-lo como parâmetro ao binário que a executará. Ex:
>
> # echo "$QUERY" > texto_query_novo.sql
>
> # comando_banco -q texto_query_novo.sql
>
> Claro que há varias maneiras de se chegar ao mesmo objetivo. Os
> comandos acima são apenas exemplos ilustrativos.
>
> Já que você está se iniciando em shell script, e começou pelo livro do
> Júlio C. Neves, não poderia estar em melhores mãos. Mas vale também
> uma olhada no site do Aurélio, que tem uma excelente sessão sobre
> shell (http://aurelio.net/shell/), principalmente na parte do canivete
> do shelleiro (http://aurelio.net/shell/canivete.html) que é um ótimo
> cartão de referências.
>
> Abraço
>
> Cristiano
>
>  
>



-- 
Att,
Lucas Pereira Caixeta
Estudante de Tecnologia e Pesquisador Independente.
Cel.: +55 61 8527-1148
E-mail: address@hidden
Brasília-DF

Confidencialidade: A informação contida nesta mensagem de e-mail, incluindo
quaisquer anexos, é confidencial e está reservada apenas à pessoa ou
entidade para a qual foi endereçada. Se você não é o destinatário ou a
pessoa responsável por encaminhar esta mensagem ao destinatário, você está,
por meio desta, notificado que não deverá rever retransmitir, imprimir,
copiar, usar ou distribuir esta mensagem de e-mail ou quaisquer anexos. Caso
você tenha recebido esta mensagem por engano, por favor, contate o remetente
imediatamente e apague esta mensagem de seu computador ou de qualquer outro
banco de dados. Muito obrigado.
Confidentiality Notice: The information contained in this email message,
including any attachment, is confidential and is intended only for the
person or entity to which it is addressed. If you are neither the intended
recipient nor the employee or agent responsible for delivering this message
to the intended recipient, you are hereby notified that you may not review,
retransmit, convert to hard copy, copy, use or distribute this email message
or any attachments to it. If you have received this email in error, please
contact the sender immediately and delete this message from any computer or
other data bank. Thank you.


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



reply via email to

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