1。我正在使用Oracle,其想法是使用python脚本将表导出为包含csv文件的压缩文件夹,该文件保存了我的数据。
2.Additionaly:是否可以将每列的csv中保存此数据。例如,我有4列,所有这些列都存储在csv中的1列中。 see this image
这是我的脚本:
import os
import cx_Oracle
import csv
import zipfile
connection = cx_Oracle.connect('dbconnection')
SQL = "SELECT * FROM AIR_CONDITIONS_YEARLY_MVIEW ORDER BY TIME"
filename = "sample.csv"
cursor = connection.cursor()
cursor.execute(SQL)
with open (filename, 'r') as output:
writer = csv.writer (output)
writer.writerow([i[0] for i in cursor.description])
writer.writerows(cursor.fetchall())
air_zip = zipfile.ZipFile("sample.zip", 'w')
air_zip.write(filename, compress_type=zipfile.ZIP_DEFLATED)
cursor.close()
connection.close()
air_zip.close()
代码我确实分别导出了csv和zzip文件夹以及内部正确的csv文件,我想继续仅导出该压缩文件夹! Both sample.zip containing sample.csv as expected and sample.csv generated at the same time.
答案 0 :(得分:0)
有一系列问题:
.csv 文件的格式不正确(行被视为单个记录(字符串),而不是记录序列):
csv.writer
, cx_Oracle )文档,看来是正确的.csv 和 .zip 文件中的代码“ 导出”(我不知道什么 export < / em>表示我假设 generate -表示运行代码后,两个文件都存在):
解决此问题的方法是通过删除 .csv 文件 ,然后将其存档到 .zip 文件中。转换为将在当前脚本片段末尾添加的代码:
os.unlink(filename)
作为最后的观察结果(如果要进行修脚操作),可以将关闭光标和数据库的行移动到 with 块之后或< em> air_zip 创建(在归档时将它们打开是没有意义的。)