Fiz a inserções dos produtos via um script simples em python.
Caso alguém queira fazer as inserções de uma única vez o script está abaixo
import cx_Oracle
import pandas as pd
class Extrator:
def __init__(self, linha):
self.linha = linha
self.descritor = linha[1]
def split_descritor(self):
return self.descritor.split('-')
def split_linha(self):
return [item for item in self.linha]
def get_id(self):
return self.split_linha()[0]
def get_descritor(self):
return self.descritor
def get_embalagem(self):
return self.split_linha()[2]
def get_tamanho(self):
return self.split_descritor()[1].strip()
def get_sabor(self):
return self.split_descritor()[2].strip()
def get_preco(self):
return self.split_linha()[3]
def __str__(self):
return f'ID: {self.get_id()} - Descritor: {self.get_descritor()} - Embalagem: {self.get_embalagem()} - ' \
f'Tamanho: {self.get_tamanho()} - Sabor: {self.get_sabor()} - Preco: {self.get_preco()}'
# Lendo excel
df = pd.read_excel(r"caminho_ate_o_arquivo\PRODUTOS.xlsx", engine='openpyxl') # necessita ter o pacote openpyx
df.drop(df.iloc[:,4:], inplace=True, axis=1)
# Iniciando conexão
# servidor, porta e serviço -> so utilizar o que é disponibilizado nos detalhes da
#conexao via sql developer
dsn_tns = cx_Oracle.makedsn('localhost', '1521', service_name='XE')
connection = cx_Oracle.connect(
user="system", # Usuario
password="SUA_SENHA", # Senha
dsn=dsn_tns) # Detalhes da conexão
print("Conexão com o database realizada!")
cursor = connection.cursor()
# Elimina tabela
cursor.execute("""
begin
execute immediate 'drop table TB_PRODUTOS';
exception when others then if sqlcode <> -942 then raise; end if;
end;""")
# Criando tabela
cursor.execute("""
create table TB_PRODUTOS (
PRODUTO VARCHAR2(20),
NOME VARCHAR2(150),
EMBALAGEM VARCHAR2(50),
TAMANHO VARCHAR2(50),
SABOR VARCHAR2(50),
PRECO_LISTA FLOAT
)""")
# Definindo chave primaria
cursor.execute("""
alter table TB_PRODUTOS add constraint PK_TB_PRODUTO primary key (PRODUTO)""")
for row in df.itertuples(index=False):
extrator = Extrator(row)
tup = (extrator.get_id(), extrator.get_descritor(), extrator.get_embalagem(), extrator.get_tamanho(), extrator.get_sabor(), extrator.get_preco())
cursor.execute("insert into TB_PRODUTOS (PRODUTO, NOME, EMBALAGEM, TAMANHO, SABOR, PRECO_LISTA) values(:1, :2, :3, :4, :5, :6)", tup)
print(cursor.rowcount, "Linha inserida")
connection.commit()
cursor.close()
connection.close()
Me baseei no tutorial da oracle -> link https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html
Apontamentos de erros e melhorias no código são bem vindos.