Я импортирую данные, для которых группам строк должен быть присвоен идентификатор, но во входных данных нет ничего уникального и общего для них. Имеется известный индикатор первой строки группы и того, что данные расположены по порядку, поэтому мы можем пошагово шаг за шагом устанавливать идентификатор, а затем увеличивать этот идентификатор всякий раз, когда этот индикатор найден. Я сделал это, однако это невероятно медленно, поэтому есть ли лучший способ сделать это в mysql, или мне лучше, возможно, предварительно обрабатывать текстовые данные, идущие построчно, чтобы добавить идентификатор.
Пример поступления данных, мне нужно увеличивать идентификатор всякий раз, когда мы видим «NEW»
id,linetype,number,text
1,NEW,1234,sometext
2,CONTINUE,2412,anytext
3,CONTINUE,1,hello
4,NEW,2333,bla bla
5,CONTINUE,333,hello
6,NEW,1234,anything
Так что я получу
id,linetype,number,text,group_id
1,NEW,1234,sometext,1
2,CONTINUE,2412,anytext,1
3,CONTINUE,1,hello,1
4,NEW,2333,bla bla,2
5,CONTINUE,333,hello,2
6,NEW,1234,anything,3
Iя пробовал хранимую процедуру, где я иду по очереди, обновляя информацию по ходу, но она очень медленная.
select count(*) from mytable into n;
set i=1;
while i<=n do
select linetype into l_linetype from mytable where id = i;
if l_linetype = "NEW" then
set l_id = l_id + 1;
end if;
update mytable set group_id = l_id where id = i;
end while;
Нет ошибок, это просто то, что я могу построчно читать и писать текстовый файли сделайте через секунду, пока в mysql это занимает 100 секунд, было бы неплохо, если бы в mysql был способ сделать это достаточно быстро, поэтому отдельная предварительная обработка не требовалась.