我正在使用一个简单的脚本从Oracle DB中提取数据,并使用CSV writer将数据写入CSV文件。
我查询的表包含大约25k条记录,脚本运行得很完美,但实际上非常缓慢。它需要25分钟才能完成。
通过修改代码,有哪些方法可以加快速度?欢迎您这些英雄提供任何提示。
我查询的表包含大约25k条记录,脚本运行得很完美,但实际上非常缓慢。它需要25分钟才能完成。
通过修改代码,有哪些方法可以加快速度?欢迎您这些英雄提供任何提示。
#
# Load libraries
#
from __future__ import print_function
import cx_Oracle
import time
import csv
#
# Connect to Oracle and select the proper data
#
con = cx_Oracle.connect('secret')
cursor = con.cursor()
sql = "select * from table"
#
# Determine how and where the filename is created
#
path = ("c:\\path\\")
filename = time.strftime("%Y%m%d-%H%M%S")
extentionname = (".csv")
csv_file = open(path+filename+extentionname, "w")
writer = csv.writer(csv_file, delimiter=',', lineterminator="\n",
quoting=csv.QUOTE_NONNUMERIC)
r = cursor.execute(sql)
for row in cursor:
writer.writerow(row)
cursor.close()
con.close()
csv_file.close()
for row ... writer.writerrow(...
所消耗?" - stovflarraysize
。在数据库方面,调整索引。对于Oracle Net,请调整套接字缓冲区和SDU大小。 - Christopher Jonescsv.DictWriter
中设置extrasaction ='ignore'
可以显著加速程序。虽然我个人没有看到这种改进,但在某些使用情况下可能是有效的。 - LondonRobextrasaction='ignore'
可以加速它,但这取决于你的 CSV 有多少字段。我的 CSV 只有 3 个字段,获得了 20% 的提升。 - Ralph Willgoss