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

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

Re: [shell-script] Gerar comando SQL


From: Fabiano Caixeta Duarte
Subject: Re: [shell-script] Gerar comando SQL
Date: Sun, 21 May 2006 23:55:44 -0300
User-agent: Thunderbird 1.5 (X11/20051201)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Salve!

Sugestão:

IFS=\|
while read; do
  if [[ $REPLY =~ "Tabela" ]]; then
    tabela=$(echo $REPLY | cut -c 9-)
  else
    set - $REPLY
    echo -n "insert into $tabela values ('$1','$2'"
    if [ -n "$3" ]; then
      echo -n ",'$3'"
    fi
    echo ");"
  fi
done < dados

Ficam alguns espaços antes/depois de cada variável sobrando. A diversão
agora é fazer algo equivalente à função trim de algumas linguagens. Nada
de outro mundo ;)

Abraços!

Fabiano Caixeta Duarte
Consultor em soluções para Redes de Computadores
Linux User #195299
Ribeirão Preto - SP

Flavio Torres escreveu:
> Olá,
> 
> Estou com uma zica aqui, e não estou enxergando uma maneira legal de fazer.
> 
> Tenho o arquivo de dados e tenho que gerar a saída SQL, que sera
> importada pelo psql:
> 
> linuxuser@proxy:~/bd$ cat dados
> Tabela: Fim
> 1 | 06447-001
> 2 | 06447-002
> 3 | 06447-003
> 4 | 06447-004
> 5 | 06447-005
> Tabela: Inicio
> 1 | 06447-001
> 2 | 06447-002
> 3 | 06447-003
> 4 | 06447-004
> 5 | 06447-005
> Tabela: Quadra
> 1 | 06447-001
> 2 | 06447-002
> 3 | 06447-003
> 4 | 06447-004
> 5 | 06447-005
> Tabela: Rua
> 1 | Santos
> 2 | Sao Jose do Rio Preto
> 3 | Mauá
> 4 | Diadema
> 5 | Carapicuiba
> Tabela: Endereco
> Adamantina | 06447-001 | 1
> Adolfo | 06447-002 | 2
> Aguaí | 06447-003 | 3
> Águas da Prata | 06447-004 | 4
> Águas de Lindóia | 06447-005 | 5
> linuxuser@proxy:~/bd$
> 
> 
> A saída deveria ser:
> 
> INSERT INTO Fim VALUES (1, 06447-001)
> .
> .
> .
> INSERT INTO Endereco VALUES (Águas de Lindóia, 06447-005, 5)
> 
> Como podem ver, eu tenho tabelas com 2, 3 e 4 registros, não estou
> conseguindo enxergar uma maneira de controlar isto para fazer os insert.
> 
> Fazendo separadamente, eu consegui:
> 
> ---------SCRIPT----------
> linuxuser@proxy:~/bd$ cat script.sh
> 
> #!/bin/bash
> 
> IFS=\|
> while read id nome reg;do
> echo "INSERT INTO $1 VALUES($id,'$nome','$reg')"
> done < $2
> -----------
> 
> ------SCRIPT------------
> linuxuser@proxy:~/bd$ cat gera.sh
> #!/bin/bash
> 
> TABELA=$(cat arq | grep Tabela | cut -d: -f2)
> cat arq | sed '/Tabela/d' > conteudo_tabela
> 
>  ./script.sh $TABELA conteudo_tabela
> ------------------------
> 
> --------RESULTADO DO GERA--------
> linuxuser@proxy:~/bd$ ./gera.sh
> INSERT INTO Tab_Dados VALUES(1 ,' Rua Batata ',' 50')
> INSERT INTO Tab_Dados VALUES(2 ,' Av Jose Almeida ',' 80')
> INSERT INTO Tab_Dados VALUES(3 ,' Rua Joaquim ',' 30')
> linuxuser@proxy:~/bd$
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEcSgw++b4Zs4fOnMRAprsAJ44//o5y7KlD9bdbawf2IZXsezroACfZ+Q2
qrb4SXonzruMmudBhS55u9E=
=QMvH
-----END PGP SIGNATURE-----


reply via email to

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