-----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:
>
> [EMAIL PROTECTED]:~/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
> [EMAIL PROTECTED]:~/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----------
> [EMAIL PROTECTED]:~/bd$ cat script.sh
>
> #!/bin/bash
>
> IFS=\|
> while read id nome reg;do
> echo "INSERT INTO $1 VALUES($id,'$nome','$reg')"
> done < $2
> -----------
>
> ------SCRIPT------------
> [EMAIL PROTECTED]:~/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--------
> [EMAIL PROTECTED]:~/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')
> [EMAIL PROTECTED]:~/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-----


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil




Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a