Мне нужно вывести результаты запроса SQL в CSV. Результаты запроса будут за пределами моей памяти. Кроме того, операции csv в пандах обычно выполняются намного медленнее, чем при использовании библиотеки csv, поэтому я бы предпочел не использовать панд.
Я попытался создать приведенный ниже код с намерением пакетировать список из 1000 строк, а затем добавить их к содержимому в файл CSV. Когда я запускаю его, моей системе просто не хватает памяти, и она не работает так, как я ожидал.
Я не уверен, что делаю неправильно или есть что-то, чего я просто не понимаю.
ROWS_AT_ONCE = 1000
curr.execute(
'''
SELECT
*
FROM '''+Table_Name+'''
;
'''
)
rows = curr.fetchall()
headers = list(map(lambda x: x[0], curr.description))
headers = tuple(headers)
csv_w_pointer = open(Export_Path_Name, 'a' , newline='')
csv_writer = csv.writer(csv_w_pointer, delimiter='\t', quotechar='"')
csv_writer.writerow(headers)
batch = list()
for row in rows:
batch.append(row)
if len(batch) >= ROWS_AT_ONCE:
csv_writer.writerow(batch)
batch = list()
if batch:
csv_writer.writerow(batch)
del batch
Мне нужно записать результаты sql в csv, когда не хватает памяти. Моя текущая попытка не удалась из-за превышения памяти.