繁体   English   中英

使用python将数据从csv文件插入到oracle时出现错误ORA-01722:无效编号

[英]while inserting data to oracle from csv file using python getting error ORA-01722: invalid number

我正在尝试将数据加载到oracle表。 是我以前的问题,我在其中发布了整个代码,我该怎么做。

这是代码:

def Create_list():
reader = csv.reader(open("Query_result_combined.csv","r"))
lines=[]
print("Creating a list")
for line in reader:
    lines.append(line)
return lines


def Insert_data():
#connection logic goes here 
print("Connecting Now!!")
#conn = cx_Oracle.connect(connstr)
con = cx_Oracle.connect(db_user,db_password,db_connection_name)
print("Connected to Oracle!!")
lines=Create_list()
cur=con.cursor()
print("Inserting data")
for line in lines:
    cur.execute("INSERT INTO A608232_QUERY_RESULT (InteractionId,QueryId,Score,StartOffsetInMs,EndOffsetInMs,SpeakerRole,QueryIdentity,SpeakerId) VALUES(:1,:2,:3,:4,:5,:6,:7,:8)",line)
con.commit ()
cur.close()
print("completed")

因此,我更正了回答我的问题时建议的所有proproches,以便现在我收到此新错误ORA-01722: invalid number ,错误已得到解决。

当我使用import选项将数据直接加载到oracle中时,该数据将被加载。 当我尝试在此代码中读取同一文件并尝试推送数据时,出现此错误。

我打印了lines [:1]和lines [:2],这是我得到的输出:

[['InteractionId', 'QueryId', 'Score', 'StartOffsetInMs', 'EndOffsetInMs', 
'SpeakerRole', 'QueryIdentity', 'SpeakerId']]
[['InteractionId', 'QueryId', 'Score', 'StartOffsetInMs', 'EndOffsetInMs', 
'SpeakerRole', 'QueryIdentity', 'SpeakerId'], ['34118470', '27', '45.63345', 
'89900', '90980', 'U', 'e54fd492-8877-4534-997b-9dbe9a8fbd74', '']]
 Inserting data

有人可以指出我在代码中所做的错误

您的csv文件中有一个标题行,它不是数字数据的一部分。 您必须在将csv.reader映射到文件句柄之后,才使用next(reader)跳过它。

另外:使用上下文管理器确保文件将被关闭,并且不需要循环,只需将行迭代器转换为列表(当第一行被跳过时)以读取所有行(会更快)

def Create_list():
    with open("Query_result_combined.csv","r") as f:
       reader = csv.reader(f)
       next(reader)  # skips title line
       return list(lines)  # directly iterate on the rest of the lines

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM