Утиліта mysqldump при збереженні даних таблиць об’єднує усі записи у одну команду INSERT. Виглядає це приблизно так:
INSERT INTO `таблиця` VALUES (запис1),(запис2), ..., (останній запис);
Коли таблиця має багато записів, то команда INSERT перетворюється у довжелезний рядок. Це зручно для машини, але людині читати такий файл складно.
Одне з рішень – замість однієї команди INSERT використовувати окремі команди для кожного запису:
mysqldump --extended-insert=FALSE --complete-insert=TRUE ...
Тоді файл матиме вигляд:
INSERT INTO `таблиця` (опис полів) VALUES (запис1); INSERT INTO `таблиця` (опис полів) VALUES (запис2); INSERT INTO `таблиця` (опис полів) VALUES (...); INSERT INTO `таблиця` (опис полів) VALUES (останній запис);
Але є краще рішення. Для цього достатньо пропустити результат mysqldump –extended-insert крізь регулярний вираз у інтерпретаторі Perl:
mysqldump --extended-insert ... | perl -pane "s{),(}{),n(}smg" > дамп_файл.sql
Після цього сприймати зміст дампу стає значно простіше:
INSERT INTO `таблиця` (опис полів) VALUES (запис1), (запис2), (запис3), ..., (останній запис);