如何将结果从多个oracle sql脚本导出到csv只有当脚本使用python返回数据时
问题描述:
我是新编写的自动化Python代码,因此我的主题是执行多个用oracle sql编写的etl测试脚本并写入每个查询的结果是一个csv文件,该脚本有多个sql查询每个查询结果应写入csv中的不同选项卡。我试图编写如下的基本结构,但需要帮助我如何修改代码如下: 进口OS 进口cx_Oracle 导入CSV如何将结果从多个oracle sql脚本导出到csv只有当脚本使用python返回数据时
f = open('tabledefinition.sql') #PATH WHERE THE SQL SCRIPTS ARE STORED
full_sql = f.read()
SQL= full_sql.split(';')
filename="S:\Output.csv" # PATH WHERE THE OUTPUT FILE IS STORED
FILE=open(filename,"w");
output=csv.writer(FILE, dialect='excel')
connection = cx_Oracle.connect('userid/[email protected]:PORT/SID')
#CONNECTION DETAILS FOR DB
cursor = connection.cursor()
for sql_command in SQL:
cursor.execute(SQL)
for row in cursor:
output.writerow(row)
cursor.close()
connection.close()
FILE.close()
答
虽然我还没试过此我自己,这些问题说清楚csv文件不能有多个工作表/选项卡:q1,q2,q3。
但是,我可以推荐使用The Pandas package。它有一个非常方便的read_sql function,以及一个,也许同样方便to_csv function。 read_sql
函数将从你的db中收集信息到一个DataFrame对象中。 Dataframe可以被操纵,或者可以以一些不同的格式存储,其中之一是csv。如果您在一个文件中需要多个工作表,则一个可用选项是hdf file或甚至是excel (.xlsx) file。