如何将表格导出为CSV或Excel格式

10
我需要将 Oracle 表导出为 csv/excel 文件格式(包括列标题)。欢迎使用 cx_oracle 或 sqlplus 解决方案。
来自评论的 Python 代码:
con = cx.connect() 
cur = con.cursor() 
printer = cur.execute(sqlcode) 
con.commit() 

csv 模块易于使用。请发布您已编写的代码。 - S.Lott
con = cx.connect() cur = con.cursor() printer = cur.execute(sqlcode) con.commit() - Khwaishien
1
那段代码没有使用“printer”(应该称为例如query_result)。如果是只读查询,则不需要commit()。将您的代码推进到可以将查询结果打印到stdout的阶段。然后,就创建csv等文件这个相当独立的任务提出问题。 - John Machin
1
请将以下与编程有关的内容从英语翻译成中文。 仅返回翻译文本:请勿在评论中发布代码。 请更新问题与您的代码。 - S.Lott
3个回答

14

或许可以使用标准库中的csv模块:

import csv
cursor = connection.cursor() # assuming you know how to connect to your oracle db
cursor.execute('select * from table_you_want_to_turn_to_csv')
with open('output_file.csv', 'wb') as fout:
    writer = csv.writer(fout)
    writer.writerow([ i[0] for i in cursor.description ]) # heading row
    writer.writerows(cursor.fetchall())

如果您有大量的数据,请将fetchall()展开成一个循环。

祝您好运!


3
始终使用Python2以二进制模式打开csv文件。对于Python3,请使用newline=''参数。 - John Machin
好的,John提出的建议已经加入了。(我刚刚查看了http://bugs.python.org/issue4847#msg82661) - jsw
另外,是否可以同时提取表格标题? - Khwaishien
看一下 cursor.description,在上面的编辑中,或者只需将标题写成元组 - writer.writerow(['heading1', 'heading2', ..., ])。 - jsw
针对大量行数据,调整cursor.arraysize以获得最佳性能。 - Christopher Jones

2
要创建XLS文件,请使用python-excel项目中的xlwt模块。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接