[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