Ir para conteúdo
Fórum Script Brasil
  • 0

insert no Oracle com erro


Fernando Nuñez

Pergunta

Boa Tarde,

Estou criando um arquivo de um banco de dados Oracle no formato .CSV e preciso integrar essas informações em outro banco Oracle.

Até ai pra gerar as informações ele gera num pasta na rede o arquivos com os dados porém quando vou dar o insert ele apresenta erro:

 

  Traceback (most recent call last):
  File "c:/Users/f105681/Documents/Programas_Python/Conexão_Oracle/Mercanet/Promotores/autom_promotores.py", line 16, in <module>        
    , (lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6], lines[7], lines[8], lines[9]))
IndexError: list index out of range
PS C:\Users\f105681\Documents\Programas_Python\Conexão_Oracle\Mercanet\Promotores> 

 

Esse é o Insert:

import cx_Oracle
import csv
#import schedule
#import time
 
# Criand conexão com o Banco    
con = cx_Oracle.connect('admahd/admahd@192.168.1.10/cscqa')
cur = con.cursor()
with open(r"C:\Users\f105681\Documents\Programas_Python\Conexão_Oracle\Mercanet\Promotores\Promotores.csv"as f
    csv_reader = csv.reader(fdelimiter=',')
    print(f)
    for lines in csv_reader:
               
        cur.execute(r"""insert into client(client, fullname, nickname, pwd ,boss , ORGUNIT , title,  emailid, inactive, sincronizar) 
                    values(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9)""" 
        , (lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6], lines[7], lines[8], lines[9]))
        
   
con.commit()
print('Dados Inseridos com sucesso!')
print('Commit efetuado!')
cur.close()
con.close()
 
 
Alguma sugestão?
Editado por Fernando Nuñez
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
2 horas atrás, ArteEN disse:

confira com len se seu array tem o comprimento correto que você esta passando no codigo

Como faço isso, poderia ajudar, pois o que preciso importar no ORACLE são dados como no exemplo abaixo:

 

f1200216;FLAVIANA BRANCO DE MORAES;FLAVIANA;CD18668B;f106183;WICKBOLD.12 - SANTA CATARINA.USUARIOS;Promotor Vendas;flaviana.moraes.sc@wickbold.com.br;0;0

Link para o comentário
Compartilhar em outros sites

  • 0
10 horas atrás, Fernando Nuñez disse:

, (lines[0], lines[1], lines[2], lines[3], lines[4], lines[5], lines[6], lines[7], lines[8], lines[9]))

aparentemente o erro esta nessa linha, o erro diz que a lista não tem o comprimento correspondente com o chamado. não tenho condições de investigar você tera que fazer alguns testes por conta.

a principio eu verificaria com o len, já tinha dito antes

print(len(lines))

o esperado é que seja 10, mas o erro indica que é menos que isso

coloque a linha sugerida logo a baixo do loop for

Link para o comentário
Compartilhar em outros sites

  • 0
Em 06/08/2021 em 23:04, ArteEN disse:

aparentemente o erro esta nessa linha, o erro diz que a lista não tem o comprimento correspondente com o chamado. não tenho condições de investigar você tera que fazer alguns testes por conta.

a principio eu verificaria com o len, já tinha dito antes

print(len(lines))

o esperado é que seja 10, mas o erro indica que é menos que isso

coloque a linha sugerida logo a baixo do loop for

Boa Noite, obrigado pela dica,

O retorno foi 10. Se eu coloco no insert os dado manualmente ele vai, mas como isso precisa ficar num agendamento e inserindo quantos tiverem preciso substituir pelos dados do arquivo CSV ai que não estou conseguindo!

Link para o comentário
Compartilhar em outros sites

  • 0

ok, você pode testar outras formas de passar os valores

cur.execute(r"""insert into client(client, fullname, nickname, pwd ,boss , ORGUNIT , title,  emailid, inactive, sincronizar) 
                    values(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9)""" 
        , lines)

pode tenar uma das duas

cur.execute(r"""insert into client(client, fullname, nickname, pwd ,boss , ORGUNIT , title,  emailid, inactive, sincronizar) 
                    values(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9)""" 
        , *lines)
Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, ArteEN disse:

ok, você pode testar outras formas de passar os valores

cur.execute(r"""insert into client(client, fullname, nickname, pwd ,boss , ORGUNIT , title,  emailid, inactive, sincronizar) 
                    values(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9)""" 
        , lines)

pode tenar uma das duas

cur.execute(r"""insert into client(client, fullname, nickname, pwd ,boss , ORGUNIT , title,  emailid, inactive, sincronizar) 
                    values(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9)""" 
        , *lines)

ArteEN muito obrigado, consegui, agora funcionou perfeitamente, e importou super rápido!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...