У меня большой текстовый файл, который содержит данные, разделенные запятыми. Но внутри файла есть несколько блоков данных, разделенных тегами и.
Мне нужно вставить эти куски в разные таблицы в MySQL.
Я читаю файл построчно.
Когда найдено, я «создаю, если не существует» новую таблицу и начинаю вставлять построчно.
Но это занимает много времени, так как файл имеет около 1М строк.
Есть ли лучший способ ускорить процесс вставки?
Ниже приведен код, который я использую
with open(file_name_with_path) as csv_file:
csv_reader = csv.reader(csv_file,delimiter=',')
line_count = 0
start_count = 0
new_file = False
file_end = False
ignore_line = False
record_list = []
file_name = ''
temp_data = []
for row in csv_reader:
ignore_line = False
if row[0].find('<START>') ==0:
file_name = row[1]
line_count = 0
new_file = True
ignore_line = True
if row[0].find('<END>') == 0:
file_end = True
record_list.append(file_name + '_' + str(line_count))
line_count = 0
ignore_line = True
print('End of a file.')
if new_file == True:
print('Start of a new file.')
new_file = False
if line_count == 0 and ignore_line is False and new_file is False:
line_count += 1
create_table(file_name,row)
temp_data.append(row)
elif ignore_line == False:
line_count += 1
add_data(file_name, row)
temp_data.append(row)
print(f'Processed the file - {",".join(record_list)}' )
Пример текстового файла.
<START> File1
col1,col2,col3
1,A,B
2,C,D
<END>
<START> File2
col1,col2,col3,col4,col5
1,A,B,1,2
2,C,D,3,4
<END>