Здравствуйте, коллеги) Возникла необходимость разбить код дампа mysql, полученного с помощью утилиты mysqldump, на запросы. Естесственно, весь дамп базы одним разом на сервер не пошлешь... Казалось бы решение легко - explode(';', $sqlDumpCode) но есть проблемы. Допустите, что внутри текстовых полей какой-нить таблицы будут эти самы точки с запятыми? тогда запрос порубится неправильно, запись будет потеряна. Впринципе - куда копать понятно. Нужно смотреть, если точка с запятой находятся внутри незакрытой пары одинарных кавычек - это текстовое поле, рубить запрос не надо, но написание такого кода муторно, нет ли готового решения, разделяющего дамп sql на запросы?
а что сложного прогнать по циклу, и считать число встреченных одинарных кавычек. когда встречаешь ; то смотришь это число - если четное все что было до него запоминаешь как отдельный запрос, если нечетное то игнорируешь
может признак конца запроса сделать чуть длинее, что сделает менее вероятным его попадание в часть строки?... например: );\n
Оптимально второе. Пришлось потратить лишние полчаса, зато работает. Вариант avm - впринципе может и не плох, но может и не сработать, мало ли, какую там статью кто-нибудь напишет... Спасибо.
Разобрался-) Просто бинарник mysql вызываю, предворительно загоняя в файл весь дамп... ну вот и все вобщем-то. Там синтаксический анализ лучше
Просто вопрос поставлен не верно, вернее решение не соответствует вопросу, так и хочется перенести тему в программирование для новичков. У кого-нибудь из модераторов есть схожее мнение? Если да то переносите нафиг.