我需要从数据库提取大量数据(大于1GB)到csv文件。我用这个脚本:
rs_cursor = rs_db.cursor()
rs_cursor.execute("""SELECT %(sql_fields)s
FROM table1""" % {"sql_fields": sql_fields})
sqlData = rs_cursor.fetchall()
rs_cursor.close()
c = csv.writer(open(filename, "wb"))
c.writerow(headers)
for row in sqlData:
c.writerow(row)
当写入系统内存不足的文件时,问题就出现了。在这种情况下,有没有其他更有效的方法来创建一个大的csv文件?在
psycopg2
(OP使用的)有一个接受size
参数的fetchmany
方法。使用它从数据库中读取一定数量的行。您可以使用值n
过期,以平衡运行时和内存使用情况。在fetchmany
文档:http://initd.org/psycopg/docs/cursor.html#cursor.fetchmany
^{pr2}$您也可以使用生成器将其包装起来,以稍微简化代码:
你试过fetchone()吗?在
相关问题 更多 >
编程相关推荐