首页 > 解决方案 > 仅使用 csv 内容导出压缩文件夹

问题描述

1.我正在使用 Oracle,想法是使用 python 脚本将表导出为包含 csv 文件的压缩文件夹,其中包含我的数据。

2.Additionaly:是否可以将这些数据保存在每列的 csv 中。例如,我有 4 列,它们都存储在 csv 的 1 列中。 看到这张图片

这是我的脚本:

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 和压缩文件夹,其中包含适当的 csv 文件,我只想继续导出这个压缩文件夹! 包含预期的 sample.csv 的 sample.zip 和同时生成的 sample.csv。

标签: pythonexport-to-csvzipfilecx-oracle

解决方案


有一个问题列表:

  • .csv文件格式不正确(一行被视为单个记录(字符串)而不是记录序列):

  • 代码“导出.csv.zip文件(我不知道导出是什么意思,我假设生成- 意思是在运行代码后,两个文件都存在):

    • 解决此问题的方法是在将.csv文件存档到.zip文件后将其删除。翻译成代码意味着在当前脚本片段的末尾添加:

      os.unlink(filename)
      

作为最后的观察(如果你想学究气),关闭光标和数据库的行可以在with块之后或air_zip创建之前移动(在归档时保持它们打开是没有意义的)。


推荐阅读