Я проверяю наличие сбоев миграции данных в своей базе данных, и хотя мой Python скрипт отлично работает с меньшим объемом данных, в настоящее время он останавливается в середине выполнения. Cmd все еще находится в состоянии выполнения, но, похоже, не работает в какой-то момент, и мне нужно вручную прервать его, используя Ctrl + C.
Код и комментарии ниже:
import collections
import csv
a=[]
with open('FailedIds.txt') as my_file:
for line in my_file:
a.append(line) #builds array of unique row IDs that failed in migration. Contains 680k rows.
with open("OldDbAll.txt", 'r') as f:
l = list(csv.reader(f))
dict = {i[0]:[(x) for x in i[1:]] for i in zip(*l)} #builds dictionary containing all rows and columns from our old DB, key = column header, values = arrays of values. Contains 3 million rows and 9 columns, 200MB in file size.
string=''
print("Done building dictionary")
with open('Fix.txt', 'w') as f:
print(",".join(dict.keys()),file=f)
for i in range(len(dict['UNIQUEID'])):
for j in range(len(a)):
if a[j].strip()==dict['UNIQUEID'][i]: #matching failure row ID to the dictionary unique ID array
for key in dict:
string+=dict[key][i]+"," #prints the data to be re-migrated
print(string,file=f)
string=''
Когда я впервые запустил этот сценарий ночью, у меня было около 50 тысяч строк после ручного прерывания сценария python. Я думал, что это нормально, потому что мой компьютер мог перейти в спящий режим. Однако сегодня утром я получил 1k строк после того, как прогнал скрипт вчера и до ночи. Я планирую перезагрузить компьютер и в следующий раз настроить его, чтобы он не переходил в спящий режим, но я хотел бы получить все 600 тыс. + Строк в качестве выходных данных, и в настоящее время я не приблизился к этой сумме.
Я поискал и * Предел размера массива 1012 * должен быть намного выше того, для чего я его использую, поэтому что-то еще вызывает зависание программы. Приветствуются любые мысли!