У меня ~ 3 миллиона строк, которые выглядят примерно так:
INSERT INTO my_table(v1, v2, v3, v4, v5, v6, v7) VALUES(1,'STRING','STRING',,,'STRING','STRING');
Мне нужно написать скрипт, чтобы найти все экземпляры, где есть несколько запятых рядом друг с другом, и вставить null
между ними.их.
Я пробовал циклически проходить по строке и проверять каждый символ, но я хотел бы получить более быстрое решение.
Это мое текущее (предлагаемое, но медленное) решение:
char last_char = line.at(0);
for(std::string::iterator i = line.begin(); i != line.end(); ++i) {
char current_char = line[i];
if(current_char == ',' && last_char == ',') {
//Insert null here
}
last_char = current_char;
}
Решение должно быть быстрым, поскольку у меня есть примерно 3 метра строк, которые мне нужно преобразовать.
Подводя итог, после запуска скрипта строки должны выглядеть следующим образом:
INSERT INTO my_table(v1, v2, v3, v4, v5, v6, v7) VALUES(1, 'STRING', 'STRING', null, null, 'STRING', 'STRING');