Экспорт сжатой папки только с содержимым CSV - PullRequest
0 голосов
/ 09 января 2019

1. Я использую Oracle, и идея состоит в том, чтобы использовать скрипт python для экспорта таблиц в виде zip-папки, содержащей CSV-файл, в котором хранятся мои данные.

2.Дополнительно: возможно ли сохранить эти данные в формате csv для столбцов. Например, у меня есть 4 столбца, и все они хранятся в 1 столбце в CSV. смотри это изображение

Это мой сценарий:

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, так и zip-папку с соответствующим csv-файлом внутри, и я хочу продолжать экспортировать только эту zip-папку! Оба файла sample.zip содержат файл sample.csv, как и ожидалось, и файл sample.csv, сгенерированный одновременно.

1 Ответ

0 голосов
/ 09 января 2019

Есть список проблем:

  • Файл .csv неправильно отформатирован (строка рассматривается как отдельная запись (строка) вместо последовательности записей):

  • Код " экспорт " обоих .csv и .zip файлов (я не знаю, что означает export, Я предполагаю generate - это означает, что после выполнения кода оба файла присутствуют):

    • Обойти это можно, удалив файл .csv после того, как был заархивирован в файл .zip . Переведено в код, который будет означать добавление в конец текущего фрагмента скрипта:

      os.unlink(filename)
      

В качестве заключительного замечания (если кто-то хочет быть педантичным), линии, которые закрывают курсор и базу данных, могут быть перемещены сразу после с блоком или перед air_zip создание (нет смысла держать их открытыми во время архивирования).

...