Tag: cx oracle

将excel行加载到数据库的有效方法?

我们有大的excel文件(高达100k行,最多150列,大约30%的列包含长文本对象,文件大小从10mb到60mb)。 我需要以最有效的方式将这些加载到我们的Oracle数据库中。 我想用xlrd加载每个Excel文件,然后为每个Excel行创build一个INSERT语句,然后用cx_Oracle执行我的SQL。 我的问题是 – 我应该为每一行创build一个INSERT语句,然后执行它(这意味着大量的cursor.execute(sql)调用),或者我应该有一个大量的string与我所有的插入(用分号分隔),这意味着我有只有一个cursor.execute(sql)调用? 假设整个操作需要很多时间,是否有可能从数据库中获取暂停? 我记得之前有类似的东西,我正在通过cx_Oracle运行一个非常长的查询,几个小时后,有一个超时,连接丢失。 关于这个还能做什么? 这个概念有什么好处? 也许有更好的方法来实现呢? 谢谢!

根据Oracle查询将标题行写入Excel

我试图找出一个有效的方法,从我的Oracle表中写入一个xls文件,而不是每次都这样做,因为我的结果是50-70列。 headings1 = ['Column 1', 'Column 2', etc] rowx = 0 for colx, value in enumerate(headings1): sheet1.write(rowx,colx,value) 我当前的代码将只写入从第2行开始的数据行,因为我已经手动创build了一个Excel文件模板,它具有预定义的所有工作表名称和标题行,但创build该模板需要很多工作,而且我想要获取摆脱那部分,并自动将第1行作为我的标题。 Import CX_Oracle Import xlwt Import xlutils.copy Import xlrd SQL = "SELECT Column1, Column2, etc from TABLE" cursor = con.cursor() cursor.execute(SQL) wb_read = xlrd.open_workbook('Template.xls',formatting_info=True) wb_read.Visible = 1 wb_write = copy(wb_read) sheet0 = wb_write.get_sheet(0) for i, row in enumerate(cursor): […]