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

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

[SOLUÇÃO] Preciso dar insert automatico no Oracle usando o shell


From: Pedro Henrique Ponchio
Subject: [SOLUÇÃO] Preciso dar insert automatico no Oracle usando o shell
Date: Wed, 19 Dec 2001 11:17:38 -0300

Não consegui descobrir a saída praquele problema (sei que tiha um
programa para Solaris chamado dtox se não me engano que convertia código
binário e asci de Linux para Dos, e tirava o D0 do arquivo - que deve
ser aquele símbolo ^M que aparece dentro do vi). Como não achei este
programa pro meu Linux, acabei usando perl mesmo, pra quem se
interessar, segue a sintaxe:

#!/usr/bin/perl
$SQLROOT="/root/sql";
$DADO="${SQLROOT}/MERCADORIA.txt";
$SQL_TEST="${SQLROOT}/sql_test.sql";
$COL1="CODIGO";
$COL2="DESCRICAO";
$TAB="MERCADORIA";

system ("rm -rf $SQL_TEST");

open(OUT, ">$SQL_TEST") || die ("nao pude abrir: $SQL_TEST\n");

open(DADO, "$DADO") || die ("nao pude abrir: $DADO\n");

while (<DADO>) {
        chomp;
        ($VALUE1,$VALUE2) = split(" ",$_);
        print OUT "INSERT INTO $TAB ($COL1,$COL2) VALUES
('$VALUE1','$VALUE2');\n";
}
close(OUT);
close(DADO);


Obrigado, Pedro Henrique 

-----Mensagem original-----
De: Pedro Henrique Ponchio 
Enviada em: terça-feira, 18 de dezembro de 2001 21:27
Para: address@hidden
Assunto: 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!. 

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!. 


reply via email to

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