仅导出包含 csv 内容的压缩文件夹
Exporting zipped folder only with csv content
1.I 我正在使用 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 和压缩文件夹,里面有适当的 csv 文件,我只想继续导出这个压缩文件夹!
sample.zip 包含预期的 sample.csv 和同时生成的 sample.csv。
存在问题列表:
.csv文件格式不正确(一行被视为单个记录(字符串)而不是一系列记录):
- (盲目地)查看代码和工具(
csv.writer
、cx_Oracle)文档,似乎是正确的
- 当注意到文件是用 Excel 打开时,我记得我曾遇到过类似的问题。快速搜索得到 [SuperUser]:如何让 Excel 将逗号解释为 CSV 文件中的默认分隔符?
。这就是罪魁祸首(.csv 文件在在线查看器/编辑器中看起来不错)
代码“正在导出” .csv 和 .zip文件(我不知道 export 是什么意思,我假设 generate - 意思是在 运行 代码之后,两个文件都存在):
解决这个问题的方法是删除 .csv 文件 之后 它被归档到 .zip 文件。翻译成代码意味着在当前脚本片段的末尾添加:
os.unlink(filename)
作为最后的观察(如果有人想学究气的话),关闭游标和数据库的行可以移动到 with[ 之后=61=] 阻止或在 air_zip 创建之前(存档时保持打开状态没有意义)。
1.I 我正在使用 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 和压缩文件夹,里面有适当的 csv 文件,我只想继续导出这个压缩文件夹! sample.zip 包含预期的 sample.csv 和同时生成的 sample.csv。
存在问题列表:
.csv文件格式不正确(一行被视为单个记录(字符串)而不是一系列记录):
- (盲目地)查看代码和工具(
csv.writer
、cx_Oracle)文档,似乎是正确的 - 当注意到文件是用 Excel 打开时,我记得我曾遇到过类似的问题。快速搜索得到 [SuperUser]:如何让 Excel 将逗号解释为 CSV 文件中的默认分隔符? 。这就是罪魁祸首(.csv 文件在在线查看器/编辑器中看起来不错)
- (盲目地)查看代码和工具(
代码“正在导出” .csv 和 .zip文件(我不知道 export 是什么意思,我假设 generate - 意思是在 运行 代码之后,两个文件都存在):
解决这个问题的方法是删除 .csv 文件 之后 它被归档到 .zip 文件。翻译成代码意味着在当前脚本片段的末尾添加:
os.unlink(filename)
作为最后的观察(如果有人想学究气的话),关闭游标和数据库的行可以移动到 with[ 之后=61=] 阻止或在 air_zip 创建之前(存档时保持打开状态没有意义)。