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

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

RE: [shell-script] Preciso dar insert automatico no Oracle usando o she


From: Julio Cezar Neves - DISB.O
Subject: RE: [shell-script] Preciso dar insert automatico no Oracle usando o shell
Date: Wed, 19 Dec 2001 11:59:07 -0300

Fala Pedro,
este MERCADORIA.txt deve ter migrado do DOS. A regra é a seguinte: qdo vc
fizer um ftp do DOS para o LINUX, não estipule bin ou image. Estipule ASCII
que a conversão tira o ^M. O <ENTER> do DOS equivale a CR+LF (carriage
return+line feed) e no UNIX/LINUX é somente LF. Quando vc migra como binário
o LF é interpretado como final de registro e o CR se apresenta como ^M.
Vamos tentar tirá-lo:


#!/bin/bash

cat /root/MERCADORIA.txt | tr -d "\012" |
while read VALUE1 VALUE2
do
    echo "INSERT INTO TABELAX VALUES ('$VALUE1','$VALUE2')" >> teste.sql
done

Me avise se funcionou mailto:address@hidden

[ ]s,
Julio

> -----Original Message-----
> From: Pedro Henrique Ponchio [mailto:address@hidden]
> Sent: Tuesday, December 18, 2001 9:27 PM
> To: address@hidden
> Subject: RES: [shell-script] Preciso dar insert automatico no Oracle
> usando o shell
> 
> 
> Julião, isto tb tá me intrigando ...
> 
> Realmente tá tudo certim ...
> 
> Mas, por causa do símbolo ^M, o resultado fica assim com o cat:
> 
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('96070000','FECHOS
> CORRER
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('96080000','ART
> ESCRITORIO
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('96080000','ART
> PAPELARIA, CANETAS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('96090000','LAPIS
> /MINAS/GIZES
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('96100000','LOUSAS/QUADROS ESCOLARES
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES 
> ('96130000','ISQUEIROS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('96170000','GARRAFAS
> TERMICAS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES 
> ('96180000','MANEQUINS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('97010000','QUADROS
> PINTURAS LITOGRAFIAS ESTAMPAS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES 
> ('97030000','ESCULTURAS
> E ARTE ESTATUARIA
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('97040000','SELOS
> POSTAIS,FISCAIS
> ')SERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('99200000','CORREIO
> 
> e com o vim (só usando um editor de texto dá pra ver o símbolo "^M"):
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('84260000','CABREAS/GUINDASTES/PORTICOS/PONTES ROLANTES^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('84270000','EMPILHADORES^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('84280000','ELEVADORES, GRUA,ESCADAS E TAPETES^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('84290000','ESCAVADORAS,PAS CARREGADORAS^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('84300000','MAQ
> PERFURADORA^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('84310000','BALDES
> FERRO P/ESCAVADORA,PECAS GRUA^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES
> ('84310000','PECAS/GUINCHO/GUIND/AP ELEV/ESCAV/AP TERRAPL^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('84320000','MAQ
> AGRICOLAS E AP JARDINAGEM^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('84330000','MAQ
> APARELHOS COLHEITA, DEBULHA, PROD AGRIC.^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES ('84330000','MAQUINA
> AGRICOLA, CEIF,ENFARD.^M')
> INSERT INTO MERCADORIA (CODIGO,DESCRICAO) VALUES 
> ('84360000','MAQ.APAR.
> P/ AGRICULT,HORTIC, SILVICULT. APICULT,CHOCADEIRA,EQ SUINICULT^M')
> 
> 
> É como se ele tivesse interpretando que quero colocar um símbolo de
> parágrafo, ou coisa do tipo ... mas estou usando 
> exatamente a sintaxe abaixo. 
> 
> Talvez se rodar algum editor interativo pra retirar o símbolo 
> resolva de
> uma vez ... 
> Pode por favor me passar a sintaxe de um sed ou cut da vida, 
> pra rancar
> fora este símbolo estúpido?
> 
> Muito obrigado,
> Pedro
> 
> 
> 
> -----Mensagem original-----
> De: Julio Cezar Neves - DISB.O
> [mailto:address@hidden]
> Enviada em: terça-feira, 18 de dezembro de 2001 20:04
> Para: address@hidden
> Assunto: RE: [shell-script] Preciso dar insert automatico no Oracle
> usando o shell
> 
> 
> Olá Pedro,
> fiz um copiar-colar em uma linha do seu script e não vi uma falha. O
> script
> correto e otimizado seria:
> 
> #!/bin/bash
> cat /root/MERCADORIA.txt|
> while read VALUE1 VALUE2
> do
>     echo "INSERT INTO TABELAX VALUES ($VALUE1,$VALUE2)" >> teste.sql
> done
> 
> [ ]s,
> Julio
> 
> Obs: Não era para aparecer o ^M. Verifique o que está errado. 
> (Me parece
> conversão do DOS)
> 
> 
> > -----Original Message-----
> > From: Pedro Henrique Ponchio [mailto:address@hidden]
> > Sent: Tuesday, December 18, 2001 7:33 PM
> > To: address@hidden
> > Subject: RES: [shell-script] Preciso dar insert automatico no Oracle
> > usando o shell
> > 
> > 
> > Conforme sua sugestão, estou usando agora:
> > 
> > #!/bin/bash
> > DADO=/root/MERCADORIA.txt
> > cat $DADO |
> > while read VALUE1 VALUE2
> > do
> >       SINTAXE=`echo "INSERT INTO TABELAX VALUES 
> > ('$VALUE1','$VALUE2')"`
> >       echo $SINTAXE >> teste.sql
> > done
> > 
> > O resultado do teste.sql:
> > 
> > INSERT INTO TABELAX VALUES ('99900000','MODULOS/DIVERSOS,CARGA
> > MILITAR/OBJECTOS DE USO PESSOAL^M')
> > INSERT INTO TABELAX VALUES ('1010000','GADO CAVALAR^M')
> > INSERT INTO TABELAX VALUES ('1020000','GADO BOVINO^M')
> > INSERT INTO TABELAX VALUES ('1030000','GADO SUINO^M')
> > INSERT INTO TABELAX VALUES ('1050000','AVES VIVAS^M')
> > INSERT INTO TABELAX VALUES ('2010000','CARNE BOVINO FRESCA 
> REFRIG.^M')
> > INSERT INTO TABELAX VALUES ('2020000','CARNE BOVINO CONGEL^M')
> > 
> > Perfeito, o único pobrema é o final, com o pentelho ^M no final ...
> > Dá pra tirar ele, fácil de lá?
> > 
> > Muito obrigado!!
> > 
> > > -----Original Message-----
> > > From: Pedro Henrique Ponchio [mailto:address@hidden]
> > > Sent: Tuesday, December 18, 2001 6:36 PM
> > > To: address@hidden
> > > Subject: [shell-script] Preciso dar insert automatico no 
> > > Oracle usando o
> > > shell
> > > 
> > > 
> > > Estou apanhando pra conseguir colocar num arquivo .sql a sintaxe a
> > > seguir:
> > > 
> > > INSERT INTO TABELAX VALUES ("VALUE1","VALUE2")
> > > 
> > > Tem muitos arquivos, todos .txt, com a seguinte forma:
> > > 
> > > 55150000        TEXTEIS
> > > 56070000        CABOS SISAL/JUTA/FIB SINTET (CORDAS)
> > > 56070000        FIO DE PESCA
> > > 56080000        REDES PESCA
> > > 57050000        TAPETES TAPECARIAS CARPETES NE
> > > 58060000        FITAS ALGODAO/SINTETICAS
> > > 59030000        TECIDOS IMPREGNADOS,REVESTIDOS C/PLASTICO
> > > 59070000        TELAS
> > > 
> > > Preciso colocar a primeira coluna (VALUE1) e a segunda 
> > (VALUE2) dentro
> > > de tabelas. 
> > > Estou tentando isso usando:
> > > 
> > > #---------------------------------
> > > LINHAS=`cat $DADO | wc -l | awk '{print $1}'`
> > > X=0
> > > until [ "$X" -eq "$LINHAS" ]
> > > do
> > > X=`expr $X + 1`
> > > VALUE1=`sed -n ${X}p $DADO | awk '{print $1}'`
> > > VALUE2=`sed -n {X}p $DADO | ???? `
> > > #aqui monta a sintaxe e joga em algum arquivo
> > > SINTAXE=`echo "INSERT INTO TABELAX VALUES ('VALUE1','VALUE2')"`
> > > ???
> > > done
> > > #---------------------------------
> > > 
> > > Não sei como capturar na variável o VALUE2, que pode ter até 255
> > > caracteres de limite e vários espaços no meio ...
> > > Se alguém puder me dar alguma direção sobre como fazer ... 
> > não conheço
> > > sed ou awk o suficiente pra ir além ...
> > > 
> > > Muito obrigado, 
> > > Pedro Henrique
> > > 
> > > Sair da lista: address@hidden
> > > Banco Dados:   http://www.egroups.com/group/shell-script 
> > > 
> > > Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
> > http://br.yahoo.com/info/utos.html 
> > 
> > 
> > Yahoo! Groups Sponsor
> > 
> > 
> > 
> > Sair da lista: address@hidden
> > Banco Dados:   http://www.egroups.com/group/shell-script 
> > 
> > Seu uso do Yahoo! Grupos é sujeito aos Termos do Serviço Yahoo!. 
> > 
> > Sair da lista: address@hidden
> > Banco Dados:   http://www.egroups.com/group/shell-script 
> > 
> > Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
> http://br.yahoo.com/info/utos.html 
> 
> 
> Yahoo! Groups Sponsor
> 
> 
> 
> Sair da lista: address@hidden
> Banco Dados:   http://www.egroups.com/group/shell-script 
> 
> Seu uso do Yahoo! Grupos é sujeito aos Termos do Serviço Yahoo!. 
> 
> Sair da lista: address@hidden
> Banco Dados:   http://www.egroups.com/group/shell-script 
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://br.yahoo.com/info/utos.html 



reply via email to

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