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: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
