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

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

Re: [shell-script] Quebrar arquivo em multiplos


From: Rodrigo Boechat
Subject: Re: [shell-script] Quebrar arquivo em multiplos
Date: Wed, 16 Nov 2011 19:26:35 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20111001 Thunderbird/7.0.1

Boa noite.

Bom eu consegui fazendo assim.

cat teste | tr "\n" " " | sed "s/; */;\n/g">teste2

while read linha; do
read nome <<< $(echo $linha | awk '{print $1}'); echo $linha > $nome
done < teste2

"teste" é o arquivo com os comando SQLes que você passou com exemplo sem 
qualquer comentário.

Espero ter ajudado.

Rodrigo Boechat

Em 16-11-2011 18:52, Bruno Coimbra escreveu:
>
> 2011/11/16 Marcelo Loureiro <address@hidden 
> <mailto:mvloureiro%40gmail.com>>
>
> > **
> >
> >
> > O arquivo de entrada é um script SQL com multiplos comandos.
> >
> > Ex:
> >
> > cat arq.txt
> >
> > SELECT SYSDATE FROM DUAL;
> > CREATE TABLE xxx (campo varchar2(2));
> >
> > DELETE TAB1 WHERE
> > XX=91 ;
> >
> > INSERT INTO TAB2
> > (c1, c2)
> > VALUES
> > (3,
> > 3);
> >
> > /* comment */
> >
> > end;
> >
> > Preciso gerar um arquivo pra cada comando INSERT, DELETE ou UPDATE
> > encontrado.
> > Alguma sugestão ?
> > To tentando usar o getline e index do awk, mas não to conseguindo.
> >
> com o gawk (GNU awk), tente algo como:
>
> <code>
> BEGIN {
> INSERT_FILE="insert.sql";
> SELECT_FILE="select.sql";
> DELETE_FILE="delete.sql";
> }
>
> $1 == "INSERT" {
> print $0 >> INSERT_FILE;
> }
>
> $1 == "SELECT" {
> print $0 >> SELECT_FILE;
> }
>
> $1 == "DELETE" {
> print $0 >> DELETE_FILE;
> }
> </code>
>
> PS.: cada comando SQL precisa estar em uma linha pra que o script acima
> funcione.
>
> Att,
> -- 
> Bruno Coimbra
> address@hidden <mailto:bbcoimbra%40gmail.com>
>
> Existem 11 tipos de pessoas no mundo:
> As que entendem binário,
> as que acham que entendem
> e as que não entendem.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 


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



reply via email to

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