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

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

Gerar comando SQL


From: Flavio Torres
Subject: Gerar comando SQL
Date: Sun, 21 May 2006 22:17:33 -0300
User-agent: Thunderbird 1.5.0.2 (Windows/20060308)

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

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$

- --------------------

Legal, isto funcionou para a tabela que tenho com 3 registros, porém se
eu executar este mesmo script em outra tabela com 2 registros, ele já
não irá me servir.

Já criei um arquivo com os nomes das tabelas, mas aí não consegui achar
uma forma de inserir os valores sendo que sempre enrosco nos
delimitadores variados.

Poderiam me dar alguma idéia?

Obrigado.


- --

[]'s

Flavio Torres - Administrador de Sistemas
www.digitalinfo.com.br
____________________________________________________________________
PGP/GPG: KeyID 0x7720DBDE
http://keyserver.veridis.com:11371/export?id=3824682698507607006

main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
- --

[]'s

Flavio Torres - Administrador de Sistemas
www.digitalinfo.com.br
____________________________________________________________________
PGP/GPG: KeyID 0x7720DBDE
http://keyserver.veridis.com:11371/export?id=3824682698507607006

main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)

iD8DBQFEcREtNRQApncg294RAnDRAKC12VqdLCnMAf6BtMgV2F6J2QvJIgCcDAo6
WjkBMQbHjKTwXB2E0wIoA1Y=
=H7u5
-----END PGP SIGNATURE-----



reply via email to

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