У меня есть серия больших плоских текстовых файлов, которые мне нужно проанализировать, чтобы вставить в базу данных SQL.Каждая запись занимает несколько строк и состоит из около ста полей фиксированной длины.Я пытаюсь выяснить, как эффективно анализировать их без загрузки всего файла в память.
Каждая запись начинается с цифры «1» в качестве первого символа в новой строке (хотя не каждая строка, которая начинается с«1» является новой записью) и завершает много строк позже серией из 20 пробелов.Хотя каждое поле имеет фиксированную ширину, каждая запись имеет переменную длину, поскольку она может содержать или не содержать несколько необязательных полей.Поэтому я использовал "...20 spaces...\n1"
в качестве разделителя записей.
Я пытался работать с чем-то вроде этого, чтобы обрабатывать 1 КБ за раз:
def read_in_chunks(file_object, chunk_size):
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
file = open('test.txt')
for piece in read_in_chunks(file, chunk_size=1024):
# Do stuff
Однако,Проблема, с которой я сталкиваюсь, состоит в том, когда одна запись охватывает несколько фрагментов.Я пропускаю очевидный шаблон дизайна?Эта проблема может показаться довольно распространенной.Спасибо!