[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!.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SOLUÇÃO] Preciso dar insert automatico no Oracle usando o shell,
Pedro Henrique Ponchio <=