[英]Fetching huge data from Oracle in Python
我需要在 python 2.6 中从 Oracle(使用 cx_oracle)获取大量数据,并生成一些 csv 文件。
数据大小约为 400k 记录 x 200 列 x 每列 100 个字符。
哪个是最好的方法?
现在,使用以下代码...
ctemp = connection.cursor()
ctemp.execute(sql)
ctemp.arraysize = 256
for row in ctemp:
file.write(row[1])
...
...脚本在循环中保持数小时,并且没有任何内容写入文件......(有没有办法为提取的每条记录打印一条消息?)
注意:我对 Oracle 没有任何问题,在 SqlDeveloper 中运行查询非常快。
谢谢你,吉安
您应该使用cur.fetchmany()
代替。 它将获取由 arraysise (256) 定义的行块
蟒蛇代码:
def chunks(cur): # 256
global log, d
while True:
#log.info('Chunk size %s' % cur.arraysize, extra=d)
rows=cur.fetchmany()
if not rows: break;
yield rows
然后在 for 循环中进行处理;
for i, chunk in enumerate(chunks(cur)):
for row in chunk:
#Process you rows here
这正是我在TableHunter for Oracle中所做的。
我认为您的代码当时正在向数据库询问一行数据,这可能解释了速度缓慢的原因。
尝试:
ctemp = connection.cursor()
ctemp.execute(sql)
Results = ctemp.fetchall()
for row in Results:
file.write(row[1])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.